Yii前后台用户验证分离的方法

Yii的CWebUser替我们实现了用户身份验证的功能,如果有前台会员登陆和后台管理员登陆分离的需求,则需要为前台和后台的登陆定制两套不同的验证机制,主要是通过定义不同的Session来实现。以下是我的做法:

我的前后台分离是采用不同的入口文件,即index.php和admin.php,前后台拥有不同的protected路径,所以修起来比较方便。

  1. 修改配置文件(原config/main.php),定义user.class:

     'user'=>array(
         'allowAutoLogin'=>true,
         'class'=>'CWebManager',
     ),
    
  2. 在Yii中找到CWebUser.php文件,复制到components并重构为CWebManager。

  3. 修改CWebManager中的方法,关键是getIsGuest方法,我在此添加一个后台独有的session进么验证:

     public function getIsGuest(){
         return ($this->getState('__id')===null || $this->getState('ismanager')===null);
     }
    
  4. 修改登陆验证方法,在默认是components/UserIdentity,验证方法的改变在不说了,看个人需要,而接上面的修改,需要在验证成功后加入这个ismanager的Session:

     $this->setState('ismanager', 1);
    

至此,后台已完成验证分离,如果有需要,前台也可以这样做,自定义验证方法,加入独有的session进行区分。

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏