RBAC总结
来源:互联网 发布:javascript简单游戏 编辑:程序博客网 时间:2024/06/05 08:45
经过两天的学习,对于yii2权限管理也了解的七七八八了,下面是我自己的一些心得:
一、行为的理解
行为类其实就是对于components类的拓展,是yii\base\Behavior绑定到yii\base\Component类或其子类,绑定方式就是在控制器中
二、rbac基于角色的访问控制
1、角色权限和用户的关系:
权限就是你可以进入那些页面
角色就是什么人有什么权限(表示一类人),比如在银行只有经理可以处理贷款
用户就是具体的人
一个角色可以有多条权限,(银行经理处理的事情很多:贷款、客户沟通)
一个用户可以有多个角色,(现在社会谁没有几个头衔,名誉主席、银行经理)
2、大角色、小角色、权限管理集合
(自己定义安装yii2-admin后权限管理)
权限管理集合就是可以给一批路由权限(permission)
小角色是给一个或者几个路由权限
大角色包括权限集合、小角色、权限
3、具体操作
(1)创建rbac控制器,在action方法中分配权限
namespace backend\controllers;
use Yii;
use yii\web\Controller;
class RbacController extends Controller{
public function actionInit(){
//添加权限/blog/index
//为用户分配角色
}
}
(2)访问权限控制,运用到行为类/backend/components/AccessControl
class AccessControl extends ActionFilter{
public function beforeAction($action){ //获取当前的路由 $actionId=$action->getUniqueId(); $actionId='/'.$actionId; //当前用户的id $user=Yii::$app->getUser(); $userId=$user->id; //获取当前用户已经分配过的路由权限 $routes=[]; $manager=Yii::$app->authManager; foreach($manager->getPermissionsByUser($userId) as $name=>$value){ if($name[0]==='/'){ $routes[]=$name; } } //判断当前用户是否有权限当前请求的路由 if(in_array($actionId,$routes)){ return true; } $this->denyAccess($user);}/** * 如果是访客跳转到登录页面 * 如果已经登录,返回403错误,没有权限访问 */ protected function denyAccess($user){ if($user->getIsGuest()){ $user->loginRequired(); } else{ throw new ForbiddenHttpException('没有权限访问'); } }
}
之后访问成功
- RBAC总结
- THINKPHP 的 RBAC 权限总结
- RBAC
- RBAC
- rbac
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- Git 工作流
- 直接插入排序,折半插入排序
- xcode8由于权限问题导致崩溃
- rsa+aes非对称加密实例(两对公私钥)
- 《DeepWalk: Online Learning of Social Representations》学习笔记
- RBAC总结
- SSD源码解读1~~~~~~~~~~ssd_pascal.py
- 适配器模式
- 在ssm项目中使用redisTemplate
- 一名 40 岁“老”程序员的反思
- tr
- 转换字符串格式为字符+连续出现的次数
- 极简单片机开发
- ftp(vsftp) 在Cortex-A9 ARM CPU s5p4418上的移植