CakePHP身份验证与前缀路由

时间:2009-12-10 23:32:00

标签: php authentication cakephp acl

我正在使用CakePHP建立一个网站,我希望有3个部分:

  • 公共区域
  • 用户区
  • admin area

我在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似乎超越了顶部。谁能提供一些关于实现我想要的最佳方法的建议?

1 个答案:

答案 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