RBAC 检查用户是否有权限 [ 1.0 版本 ]
权限节点名称为 controllerid.''.action_id
在BaseController.php 中添加
public function beforeAction($action)
{
if(parent::beforeAction($action)){
$controllerId=$action->controller->id;
$actionId=$action->id;
$nodeName=$controllerId.'_'.$actionId;
$user=\Yii::$app->user->identity;
if(in_array($nodeName,['site_login','site_error', 'site_password'])){
return true;
}
if(!\Yii::$app->user->isGuest){
//检查是否没有修改默认密码
if($user->getIsDefaultPwd()&&!in_array($nodeName,['site_login','site_error','site_password'])){
return $this->redirect(['/site/password']);
}
}
if($controllerId==='site'||$user->getId()==User::SUPER_ADMIN){
return true;
}
if(\Yii::$app->user->can($nodeName)){
return true;
}else{
throw new ForbiddenHttpException('对不起,您现在还没获此操作的权限');
}
}else{
return false;
}
}
specialnot
注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
最后登录:2019-08-16
在线时长:27小时54分
- 粉丝43
- 金钱1175
- 威望200
- 积分3445
共 2 条评论
能不能 每个步骤都写上注释吗?新人路过
起始我也刚接触三个月而已,逼着自己去看吧
如果修改了原来的密码,YII2会立即让登录失效的.
为什么会失败,没太明白
@specialnot 我晕啊,我以为这是你弄成功的
@qq3737002 我的意思是“YII2会立即让登录失效的.”,怎么会出现这种情况