我在SO中看到了许多类似的问题,但没有一个能帮助我解决问题。
我认为CakePHP的AuthComponent在权限错误方面表现不佳。
我的CakePHP应用程序位于我网站的子域中(例如。http://www.example.com/myapp)。每次出现权限错误(用户不允许查看此页面),Cake都会在URL中添加另一个"/myapp"(因此它变成http://www.example.com/myapp/myapp)并自然地抛出一个错误,说明"myapp"控制器不存在。
在我的场景中,登录视图链接到网站的根目录。所以,我在我的AppController中有:
public $components = array(
'Session',
'Auth' => array(
'loginAction' => array(
'controller' => 'users',
'action' => 'login'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'authorize' => 'Controller',
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
)
)
);
在routes.php:中
Router::connect('/', array('controller' => 'users', 'action' => 'login'));
Router::connect('/users', array('controller' => 'users', 'action' => 'login'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
我想要的只是能够手动配置Cake在出现权限错误时应该重定向到哪个URL。有人知道怎么做吗?
对不起,伙计们,我后来不小心找到了答案。由于CakePHP有一些非常直观的标签,我开始猜测Auth组件的一些可能选项,以解决我的问题。我最终发现了unauthorizedRedirect
选项!
所以我有:
'unauthorizedRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
现在一切都很好。我只希望Cake的文档已经涵盖了这一点。。。如果是的话,我发誓我哪儿也找不到。