CakePHP身份验证与前缀路由

gac*_*rux 3 php authentication acl cakephp

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

  • 公共区域
  • 用户区
  • 管理区域

我在routes.php中设置了前缀路由,看起来像

Router::connect('/user/:controller/:action/*', array('prefix' => 'user', 'user' => true));
Router::connect('/admin/:controller/:action/*', array('prefix' => 'admin', 'admin' => true));
Run Code Online (Sandbox Code Playgroud)

我想要它所以任何带有user_前缀的动作都将重定向到登录屏幕,如果尚未登录并且用户类型是'正常'(侧面问题:用户可以正常:P)并且任何带有admin_前缀的操作也会重定向但需要用户类型的管理员.

我开始尝试使用Auth组件,但它似乎非常不灵活,而ACL似乎超过顶部.谁能提供一些关于实现我想要的最佳方法的建议?

dec*_*eze 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']);
}
Run Code Online (Sandbox Code Playgroud)

您还可以isAuthorized()根据需要向模型或控制器添加功能,以执行更高级的身份验证.请参阅http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Authentication.html#authcomponent-variables.