Yii2 高级:如何在后端为登录用户设置过滤器?
Posted
技术标签:
【中文标题】Yii2 高级:如何在后端为登录用户设置过滤器?【英文标题】:Yii2 advanced : how to set filter for login user in backend? 【发布时间】:2018-02-10 07:41:10 【问题描述】:现在所有用户都可以在前端和后端登录
如何设置后台登录的限制和过滤?!
这是我在后台的main-local.php
'modules' => [
'user' => [
'class' => 'dektrium\user\Module',
'enableUnconfirmedLogin' => true,
'confirmWithin' => 21600,
'cost' => 12,
'controllerMap' => [
'admin' => 'backend\controllers\user\AdminController',
'profile' => 'backend\controllers\user\ProfileController',
'recovery' => 'backend\controllers\user\RecoveryController',
'registration' => 'backend\controllers\user\RegistrationController',
'security' => 'backend\controllers\user\SecurityController',
'settings' => 'backend\controllers\user\SettingsController',
],
'admins' => ['admin']
],
]
我希望只有管理员能够进入后端
【问题讨论】:
如果您使用带有 RBAC 的高级模板,您无需执行任何操作,普通用户将无法登录到后端。因为backend
和frontend
会话cookie 是分开的。
【参考方案1】:
您可以使用 rbac 并设置一个管理员角色,然后在控制器中:
public function behaviors()
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
//if actions not set, it applies to all actions.
//'actions' => ['index'],
'allow' => true,
//the 'admin' is your RBAC auth item.
'roles' => ['admin'],
],
],
],
];
有关 RBAC 的更多信息,请参阅RBAC doc。
您也可以通过添加IP地址来设置您的控制器过滤器
//'192.168.*' matches all IP addresses in the segment '192.168.'. If this option is empty or not set, it means this rule applies to all IP addresses.
'ips'=> ['192.168.*'],
最后,如果您想设置全局访问控制过滤器,只需检查链接 To do it globally without inheritance.
【讨论】:
这不会禁止登录,而是在您访问该特定控制器时提供403
以上是关于Yii2 高级:如何在后端为登录用户设置过滤器?的主要内容,如果未能解决你的问题,请参考以下文章
Yii2:是不是可以从登录 Yii 调试器中过滤掉一些查询?