2009-12-10 79 views
3

我建立与CakePHP的一个网站,我想有三个部分:CakePHP的验证与前缀的路由

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

我在route.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似乎超过了顶层。任何人都可以提供一些关于实现我想要的最佳方式的建议吗?

回答

7

验证组件应该有足够的灵活性。

你可以做一个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

+0

非常感谢 - 只是我需要的帮助。 – gacrux

+0

BTW $ this-> params ['prefix']是对的 – gacrux