Yii2-权限控制RBAC-实例篇(三)
2016-02-24 21:05
711 查看
思路解说:
首先,我们约定以Controller/Action这样的格式作为有效的权限名称,直接将权限赋给用户,最后在can这个方法中做校验。为了不破坏源码,我们可以在ActiveRecord之前加一层基础控制器BaseController,普通控制器继承BaseController。
方案一
创建权限:
那么我们建立对应的权限数据(如何创建在RBAC第二篇中已经详细讲解)
权限post/detail:文章详情页的权限
权限赋给用户:
将权限直接赋给用户(此处用户ID为1)
检测权限:
在基础控制器中的beforeAction中验证权限:
注意:
这个必须要加,不然会报错,至于为什么就不多说了,简称一言难尽,V_V
方案二(代码就不赘述了跟上面差不多)
权限赋给角色,角色赋给用户
创建角色:
还是之前的权限[post/detail],去掉权限和用户关联,添加权限和角色的上下级关联
将角色赋给用户
检测权限
效果于上面保持一致
首先,我们约定以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],去掉权限和用户关联,添加权限和角色的上下级关联
将角色赋给用户
检测权限
效果于上面保持一致
相关文章推荐
- Yii2-权限控制RBAC-应用篇(二)
- Yii2-权限控制RBAC-理论篇(一)
- Yii2-权限控制RBAC实战篇(一)
- OutputStream和InputStream流的结构
- yii2的安装使用
- php cookie学习
- PHP实现模拟登录
- PHP实现模拟登录
- php字符串处理之全角半角转换
- thinkphp 的like查询注意事情
- ntp 服务器搭建
- PHP魔术方法之__call重载方法
- PHP 5.4 的 Trait 特性
- php使用分享(一)
- PHP 魔术方法__set() __get() 方法
- 打印php信息的方法
- phpmailer 中文使用说明(简易版)
- PHP之克隆clone
- PHP延迟静态绑定
- YII2配置多语言