请问,如何使用AccessControl优雅、简洁的进行权限控制呢? [ 2.0 版本 ]
大家好
请问如下的需求应该如何使用AccessControl 实现呢?
controller中有三个方法。
- hello
- name
- delete
用户有2个
- admin [rbac中分配了3个方法]
- user [rbac中 只有 hello]
需求:
- 所有未登录用户不能访问任何方法
- 登录用户中 根据rbac的授权 来访问。
不知道如何实现呢?
我现在使用
beforeaction 来判断rbac的权限,但是 使用了 beforeaction 之后 我设置的VerbFilter 对 delete方法的post过滤就失效了。 注释beforeaction后 是正常的。
这是我现在的 behaviors配置 但是无法实现 2个已登录用户的 权限区别。
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
//'only' => ['hello',],
'rules' => [
[
'allow' => false,
'roles' => ['?'],
],
],
],
];
}
手册中 AccessControl类 有方法beforeAction 说明是 在所有的过滤之后 在执行之前的最后一个判断的时间了,我感觉比较适合我现在的情况,但是水平太菜,不知道如何去配置AccessControl类的beforeAction 。
请问该如何使用AccessControl 简洁优雅的实现我的需求呢?
最佳答案
-
public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'], ], ], 'access' => [ 'class' => \yii\filters\AccessControl::className(), 'only' => ['hello','name','delete'], 'rules' => [ [ 'actions' => ['hello'], 'allow' => true, 'roles' => ['user'], ], [ 'actions' => ['hello','name','delete'], 'allow' => true, 'roles' => ['admin'], ], ], ], ]; }
其他 0 个回答
没有找到数据。
xjdata
注册时间:2011-12-07
最后登录:2024-05-05
在线时长:112小时38分
最后登录:2024-05-05
在线时长:112小时38分
- 粉丝23
- 金钱14169
- 威望75
- 积分16039