大家好
请问如下的需求应该如何使用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 简洁优雅的实现我的需求呢?