Yii基于RBAC的权限控制
来源:互联网 发布:显示iphone在线软件 编辑:程序博客网 时间:2024/05/17 03:37
之前用过一个Yii的扩展srbac
很强大,现在主要介绍一下Yii自带的权限控制的实现
- 在controller中添加过滤器和过滤规则
/** * @return array action filters */ public function filters() { return array( 'accessControl', // perform access control for CRUD operations //array( //'COutputCache + view'//表示对view这个action起作用, //'duration'=>100, //'varyByParam'=>array('id'), //), ); } /** * Specifies the access control rules. * This method is used by the 'accessControl' filter. * @return array access control rules */ public function accessRules() { return array( array('deny', // allow authenticated users to access all actions 'actions'=>array('onlyadmin'), 'roles'=>array('user') ), ); }
- 在main.php里面添加
authManager
component
'authManager'=>array( 'class'=>'CPhpAuthManager', 'defaultRoles'=>array('guest'),),
根据以上配置,controller
中的onlyadmin
这个action
不允许role
为user的用户去访问
- 创建role并把用户分配到该角色下
//创建role$auth=Yii::app()->authManager;$role=$auth->createRole('admin','role admin');$role=$auth->createRole('user','role user');$role=$auth->createRole('guest','role guest');$auth->save();//把用户分配到某个role下面$auth=Yii::app()->authManager;$auth->assign('user',Yii::app()->user->id);$auth->save();
- RBAC之外的权限控制
可能有些人觉得这样控制还是比较麻烦,Yii还提供了基于expression
的验证方式- 扩展CWebUser(可以通过重写user类或者修改
UserIdentity
的authenticate
方法)
- 扩展CWebUser(可以通过重写user类或者修改
//修改UserIdentity public function authenticate() { $user=User::model()->find('LOWER(username)=?',array(strtolower($this->username))); if($user===null) $this->errorCode=self::ERROR_USERNAME_INVALID; else if(!$user->validatePassword($this->password)) $this->errorCode=self::ERROR_PASSWORD_INVALID; else { $this->_id=$user->id; $this->username=$user->username; $this->setState('role', $user->role);//setState可以直接传递给CWebUser $this->errorCode=self::ERROR_NONE; } return $this->errorCode==self::ERROR_NONE; } //修改controoler中的accessRules方法 public function accessRules() { return array( array('deny', // allow authenticated users to access all actions 'actions'=>array('onlyadmin'), //'roles'=>array('user') 'expression' => '$user->role == "user"'//$user = Yii::app()->user ), ); }
这样就可以和项目中已有的role
结合起来了
- 本例中使用的是
CPhpAuthManager
,默认会在data
目录下生成一个auth.php
。 - 如果想要使用数据库把
CPhpAuthManager
换乘CDbAuthManager
,然后按照文档配置下即可
0 0
- Yii基于RBAC的权限控制
- yii 基于php的Rbac权限控制
- YII2.0框架(五) RBAC基于角色的权限控制源码透析yii\rbac\DbManager
- Yii基于RBAC的权限系统
- 基于角色的访问控制-rbac-yii
- 基于角色的权限控制 - RBAC
- RBAC基于角色的权限控制
- YII framework下基于角色的访问控制(RBAC),权限设置 yii下,filters()和accessControl()是YII基本的访问控制体系, public function filt
- Yii的RBAC权限控制的使用——SRBAC
- YII framework下基于角色的访问控制(RBAC)
- YII framework下基于角色的访问控制(RBAC)
- Thinkphp的RBAC,基于角色的权限控制
- (ThinkPHP 1.5)基于RBAC的权限访问控制-实例解析
- ThinkPHP的RBAC(基于角色权限控制)详解
- RBAC基于角色的权限控制个人理解
- ThinkPHP的RBAC(基于角色权限控制)详解
- ThinkPHP的RBAC(基于角色权限控制)详解
- ThinkPHP的RBAC(基于角色权限控制)详解
- Android中 android:layout_weight 属性
- 应届生签约必须参考的九个注意事项
- 作业3.24
- 【Spring】JDK中动态代理实现原理详解
- callback是什么鬼
- Yii基于RBAC的权限控制
- Linux 网络编程—— libnet 使用指南
- 【好饿】 = =
- 教你几个规避offer、三方和劳动合同违约金的方法
- iOS学习——数据库操作(使用FMDB)
- uva 10271 Chopsticks (DP)
- 使用ssh-keygen生存密钥对
- AndroidManifest.xml详解(上)
- HBase无法创建表的问题的解决