我想限制角色成员的用户访问后端。 我使用的是默认的yii2
先进的授权RBAC
,但在访问规则的规则,我不能添加任何角色:如何禁止用户访问yii2中后端的角色成员?
rules => [
[
'actions' => ['login', 'error'],
'allow' => TRUE,
]
在后端的siteController
。如果有什么办法可以做到这一点,我会很感激。
我想限制角色成员的用户访问后端。 我使用的是默认的yii2
先进的授权RBAC
,但在访问规则的规则,我不能添加任何角色:如何禁止用户访问yii2中后端的角色成员?
rules => [
[
'actions' => ['login', 'error'],
'allow' => TRUE,
]
在后端的siteController
。如果有什么办法可以做到这一点,我会很感激。
如果你只想要拒绝访问成员,并允许your_role可以
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => false,
'roles' => ['member']
],
[
'allow' => true,
'roles' => ['your_role'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
这是没有必要每个后端控制器的行为进行编码。您可以相同的代码添加到$配置的结束[ '组件']数组后端/配置/ main.php:
'as beforeRequest' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'allow' => false,
'roles' => ['member'],
],
],
'denyCallback' => function() {
return Yii::$app->response->redirect(['frontend']);
},
],
试试这个,
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => AccessControl::className(),
// We will override the default rule config with the new AccessRule class
'ruleConfig' => [
'class' => AccessRule::className(),
],
'only' => ['index','create', 'update', 'delete'],
'rules' => [
[
'actions' => ['index','create'],
'allow' => true,
// Allow users, moderators and admins to create
'roles' => [
User::ROLE_USER,
User::ROLE_MODERATOR,
User::ROLE_ADMIN
],
],
[
'actions' => ['update'],
'allow' => true,
// Allow moderators and admins to update
'roles' => [
User::ROLE_MODERATOR,
User::ROLE_ADMIN
],
],
[
'actions' => ['delete'],
'allow' => true,
// Allow admins to delete
'roles' => [
User::ROLE_ADMIN
],
],
],
],
];
}