在我的 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/
。
我该如何解决这个问题?
答案 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'