每个用户或一个人的多个登录功能

时间:2014-06-18 19:49:36

标签: php cakephp authentication

我正在开发基于CakePHP的项目。

有多个用户具有不同的视图和权限。如何管理他们的登录过程?我应该在每个控制器中实现登录功能吗?或者为所有人制作一个脚本或功能?这是否意味着管理授权过程的所有用户都会有一个控制器?

1 个答案:

答案 0 :(得分:0)

一次登录。 CakePHP具有一些功能,您可以根据其登录状态更改其外观和可用页面和功能。

  1. 访问控制列表或ACL,请参阅http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html ACL比其他解决方案更难设置,但如果您有一个复杂的功能列表,用户可能拥有或可能没有权限个人基础,这就是ACL的用途。很多时候这个功能都是矫枉过正的。

  2. 在用户上设置与用户级别对应的字段。然后根据登录的人来切换布局。例如,假设你有一个名为role的字段,可以是#34; god"," admin"或"用户",以及与它们对应的布局" god.ctp"," admin.ctp"," user.ctp"然后你可以添加AppController的前置过滤器:

    public function beforeFilter() 
    {
        if($this->Auth->user())
            $this->layout = $this->Auth->user('role');  
    }
    
  3. 然后,只需使用Auth的组件isAuthorized功能拒绝或允许各种角色的用户访问。例如,在AppController中:

    public function isAuthorized($user) 
    {   
        // Admin and god can access every action, including those with the admin prefix
        if (isset($user['role']) && in_array($user['role'], array('admin', 'god'))) 
        { 
            return true; 
        } 
    
        //allow all logged in users access to items without a prefix  
        if( !isset($this->params['prefix']))  return true;  
    
        // Default deny -- regular users can't access pages with the admin prefix
        return false; 
    }
    

    我建议您阅读Auth组件 - http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html