Yii2-权限控制RBAC-实例篇(三)

思路解说:

首先,我们约定以Controller/Action这样的格式作为有效的权限名称,直接将权限赋给用户,最后在can这个方法中做校验。为了不破坏源码,我们可以在ActiveRecord之前加一层基础控制器BaseController,普通控制器继承BaseController。

方案一

创建权限:

那么我们建立对应的权限数据(如何创建在RBAC第二篇中已经详细讲解)

权限post/detail:文章详情页的权限


权限赋给用户:

将权限直接赋给用户(此处用户ID为1)


检测权限:

在基础控制器中的beforeAction中验证权限:

public function beforeAction($action)
{
    if (!parent::beforeAction($action)) {
        return false;
    }
        
    $controller = Yii::$app->controller->id;
    $action = Yii::$app->controller->action->id;
    $permissionName = $controller.'/'.$action;        
    if(!\Yii::$app->user->can($permissionName) && Yii::$app->getErrorHandler()->exception === null){
        throw new \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
    }
    return true;
}

注意:

Yii::$app->getErrorHandler()->exception === null

这个必须要加,不然会报错,至于为什么就不多说了,简称一言难尽,V_V

方案二(代码就不赘述了跟上面差不多)

权限赋给角色,角色赋给用户

创建角色:


还是之前的权限[post/detail],去掉权限和用户关联,添加权限和角色的上下级关联


将角色赋给用户


检测权限

效果于上面保持一致



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值