我正在使用CakePHP建立一个网站,我希望有3个部分:
我在routes.php中设置了前缀路由,看起来像
Router::connect('/user/:controller/:action/*', array('prefix' => 'user', 'user' => true));
Router::connect('/admin/:controller/:action/*', array('prefix' => 'admin', 'admin' => true));
我想要它所以任何带有user_前缀的操作都会重定向到登录屏幕,如果尚未登录并且用户类型是“正常”(侧面问题:用户可以正常:P)以及任何带有admin_前缀的操作也是重定向但需要用户类型的管理员。
我开始尝试使用Auth组件,但它似乎非常不灵活,而ACL似乎超越了顶部。谁能提供一些关于实现我想要的最佳方法的建议?
答案 0 :(得分:7)
Auth组件应该非常灵活。
你可以这样做beforeFilter()
:
// I think it's params['prefix'], might be different
// vvvvvvvvvvvvvvvv
if (isset($this->params['prefix'])) {
$this->Auth->userScope = array('User.type' => $this->params['prefix']);
}
您还可以根据需要将isAuthorized()
函数添加到模型或控制器中,以执行更高级的身份验证。请参阅http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Authentication.html#authcomponent-variables。