CakePHP 2.7.1 unauthorizedRedirect

时间:2015-08-18 12:20:20

标签: cakephp

在我的 AppController 中,我有组件

的代码
    public $components = array(
        'Acl',
        'Auth' => array(
            'authorize' => array(
                'Actions' => array('actionPath' => 'controllers')
            ),
            'unauthorizedRedirect' => array(
                'controller' => 'member',
                'action' => 'index'
            )
        ),
        'Session',
        'DebugKit.Toolbar'
    );

所以,unauthorizedRedirect工作正常。我尝试输入用户无权访问的网址,幸运的是,我被重定向到'localhost/appname/member/'.

我担心的是,这仅适用于一种登录用户。

让我们说登录用户试图访问localhost/appname/admin/add_post/。由于只有管理员可以访问该页面,因此用户将被重定向到localhost/appname/member/。如果管理员访问未经授权的页面怎么办?当然,该管理员必须重定向到某个地方,但不能重定向到localhost/appname/member/

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我相信有很多方法。您已经在使用ACL,这是一种方式。或者另一个"懒惰"这样做的方法是在AppController中使用beforeFilter方法。

答案 1 :(得分:0)

好的,经过几个小时的研究和研究后,我得出了一个解决方案。

这是AppCntroller的代码:

     public $components = array(
        'Acl',
        'Auth' => array(
            'authorize' => array(
                'Actions' => array('actionPath' => 'controllers')
            ),
            'unauthorizedRedirect' => false
        ),
        'Session',
        'DebugKit.Toolbar'
    );

这样做不是将用户重定向到另一个页面,而是显示'error400.ctp'。

现在,我们不想显示默认的CakePHP错误布局,因此我们仍然需要编辑它或进行自定义。

在“View / Layouts / your_error_file.ctp”下创建一个新文件。之后,转到“查看/错误/ error_file.ctp”并粘贴以下代码:

$this->layout = 'your_error_file'