Yii框架RBAC
来源:互联网 发布:淘宝关键词价格查询 编辑:程序博客网 时间:2024/06/05 05:20
1、首先说一下什么是RBAC
基于角色的访问控制(Role-Based Access Control),作为传统访问控制(自主访问,强制访问)的有前景的受到广泛的关注,在RBAC中,权限与角色相关联,用户通过角色的成员得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据他的责任和资格来被指派响应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并并赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。
2、测试中我们可以做一个简单的登录,将用户名和id存入到session中,方便以后的使用
3、yii框架中的权限分配
我们在学习php的过程中应该对TP框架中的RBAC很熟悉,其实框架之间的内容大多数都是相同的,下面让我们来看一下yii框架中的RBAC。
配置RBAC
在开始定义授权数据和执行存取检查之前,需要先配置应用组件yii/base/Application::authManager。yii提供了两套授权管理器;yii/rbac/phpManager和yii/rbac/DbManager。牵着使用PHP脚本存放授权数据,而后者使用数据库存放授权数据。如果你的应用不要求大量的动态角色和权限管理,你可以考虑使用前者。
下面是两个文件的位置
配置在frontend或者backend文件夹,config文件夹下main.php
或者
建立公共控制器,继承controller,然后其他控制器继承公共控制器
新建控制器中,建立beforeAction方法,
class CommonController extends Controller{
public function beforeAction($action){
$session=\Yii::$app->session;
//取出存入的session值
$user_session=$session->get('存入的session名');
//判断是否有登录session
if(!isset($user_session)){
echo "请先登录";
}
//判断当前用户的权限
//获取当前访问的控制器
$controller=Yii::$app->controller->id;
//获取当前访问的方法
$action=Yii::$app->controller->action->id;
//如果当前访问的首页权限是公共的,则开放访问
if($controller=="admin" && $action="index"){
return true;
}
//取出session中存入的id值
$id_session=$session->get("存入的id名");
//查询出改用户的节点
//执行sql语句
$rows=Yii::$app->db->createCommand($sql)->queryAll();
//进行判断,如果有数据就进行判断,没有数据,则给一个警告
if($rows){
foreach($rows as $k => $v){
if($v['controller']==$controller && $v['action']==$action){
return true;
}
}
}else{
echo "抱歉,您的使用权限不够";
}
}
}
如果在以上代码的执行中,出现页面不显示的错误,就再添加下面的代码
if (!parent::beforeAction($action)) { return false;}return true;
- Yii框架RBAC
- Yii框架之Rbac
- yii框架rbac
- yii框架中操作RBAC
- Yii框架RBAC权限管理
- Yii 框架自带rbac (文件版)
- YII RBAC
- YII框架使用SRBAC实现RBAC权限访问控制
- YII2.0框架(五) RBAC基于角色的权限控制源码透析yii\rbac\DbManager
- 细说Yii的rbac
- yii 权限RBAC
- yii rbac 基础操作
- Yii Rbac权限
- Yii中的rbac
- rbac框架
- Yii RBAC中的大致说明
- Yii RBAC中的大致说明
- FleaPHP框架中的RBAC
- ORM概述
- 屏幕触摸事件传递
- linux epoll 实例
- 求sin(x)的近似值
- AS 导入第三方工程(AS),同样适用由Eclipse转为AS工程导入第三方AS工程
- Yii框架RBAC
- mysql 删除完全重复的样本存储过程
- KVC + KVO
- 高精度(乘法和加法)
- 深究AngularJS——自定义服务详解(factory、service、provider)
- hdu5512 Pagodas 规律题 gcd
- mac删除分区并合并分区
- openwrt安装和使用minicom
- php操作mysql数据库