2009-12-10 111 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