为什么无法访问注销操作?

时间:2012-12-12 22:59:36

标签: php authentication cakephp-2.0 logout

我想让Auth授予用户控制器的login()logout()add()操作权限,但如果我使用{{}},则无关紧要{1}}我是否收到了消息:$this->Auth->allow('logout'); You are not authorized to access that location.login()工作正常。

这是我的AppContoller.php:

add()

这是我的UsersController.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');
    }

}

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

1 个答案:

答案 0 :(得分:0)

您似乎正在访问注销操作而没有任何问题,但注销重定向会破坏您的会话并将您重定向到page视图。

您似乎没有登录就无法访问该页面。 (您可以尝试访问URL而不进行记录)

beforeFilter

添加PagesController功能
public function beforeFilter(){
    parent::beforeFilter();

    $this->Auth->allow();
}

PagesController默认使用CakePHP 2.2,如果你没有它,只需复制并粘贴任何其他控制器并添加此功能删除所有其余部分。

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