为什么注销操作无法访问



我想让Auth访问我的用户控制器的login()logout()add()操作,但不管我是否使用 $this->Auth->allow('logout'); 我都会收到消息:You are not authorized to access that location. login()add()工作正常。

这是我的AppContoller.php:

class AppController extends Controller {
    public $components = array(
        'Auth' => array(
            'authenticate' => array(
                'Form' => array(
                    'userModel' => 'User',
                    'fields' => array(
                    'username' => 'email', 'password' => 'password')
                    )
            ), 
            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'landing')
        ), 'Session'
    );
    public function beforeFilter() {
        $this->Auth->allow('add', 'login');
    }
}

这是我的用户控制器的相关部分.php:

    public $helpers = array('Html', 'Form', 'Session');
    public $components = array('Session');

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('logout');
    }
    public function logout() {
        $this->set('title_for_layout', 'Logout');
        $this->redirect($this->Auth->logout());
    }

有人看到这里的问题吗?我感谢您的帮助。

您似乎正在毫无问题地访问注销操作,但注销重定向会破坏您的会话并将您重定向到page视图。

似乎您在不登录的情况下无法访问该页面。(您可以尝试在不被记录的情况下访问 URL)

在您的PagesController添加beforeFilter函数:

public function beforeFilter(){
    parent::beforeFilter();
    $this->Auth->allow();
}

PagesController 默认随 CakePHP 2.2 一起提供,如果您没有它,只需复制并粘贴任何其他控制器并添加此功能即可删除所有其他控制器。

编辑:如果 PagesController 已经存在,只需添加 beforeFilter 函数即可。

相关内容

  • 没有找到相关文章

最新更新