yii rbac管理
以下是Controller代码
<?php
/**
* Created by PhpStorm.
* User: zhoukang
* Date: 2017/6/11
* Time: 19:31
*/ namespace frontend\controllers; use yii\web\Controller;
use frontend\models\Rbac;
use yii;
use frontend\models\Loginform; class RbacController extends Controller
{
public function actionIndex(){
return $this->render('index',['message'=>'您正在使用的是权限控制']);
}
//创建角色
public function actionCreaterole(){
$model = new Rbac();
return $this->render('role',['model'=>$model]);
}
//将创建的角色入库
public function actionDoadd(){
$role = Yii::$app->request->post('Rbac');
$item = $role['role'];
$auth = Yii::$app->authManager;
$role = $auth->createRole($item);
$role->description = '创建了 ' . $item . ' 角色';
$auth->add($role);
return $this->render('index',['message'=>'创建角色成功,您可以继续操作']);
}
//创建权限
public function actionCreatepower(){
$model = new Rbac();
return $this->render('power',['model'=>$model]);
}
//将创建的权限入库
public function actionDopower(){
$power = Yii::$app->request->post('Rbac');
$item = $power['power'];
$auth = Yii::$app->authManager;
$createPost = $auth->createPermission($item);
$createPost->description = '创建了 ' . $item . ' 许可';
$auth->add($createPost);
return $this->render('index',['message'=>'创建权限成功,您可以继续操作']);
}
//给角色分配权限
public function actionRp(){
$models = new Loginform();
$model = new Rbac();
//查出所有的角色
$role = Rbac::getrole('auth_item');
//查出所有的权限
$power = Rbac::getpower('auth_item');
$roles = $models->arraytostring($role,'name','name');
$powers = $models->arraytostring($power,'name','name');
return $this->render('rp',['model'=>$model,'role'=>$roles,'power'=>$powers]);
}
//将分配好的角色和权限入库
public function actionDorp(){
$data = Yii::$app->request->post('Rbac');
$power = $data['power'];
$role = $data['role'];
$item = Rbac::rolepower($role,$power);
foreach($item as $items){
$auth = Yii::$app->authManager;
$parent = $auth->createRole($items[]);
$child = $auth->createPermission($items[]);
$auth->addChild($parent, $child);
}
return $this->render('index',['message'=>'分配权限成功,您可以继续操作']);
}
//给用户分配角色
public function actionUr(){
$models = new Loginform();
$model = new Rbac();
//查出所有的角色
$role = Rbac::getrole('auth_item');
//查出所有的权限
$user = Rbac::getuser('user');
$roles = $models->arraytostring($role,'name','name');
$users = $models->arraytostring($user,'id','username');
return $this->render('ur',['model'=>$model,'role'=>$roles,'user'=>$users]);
}
public function actionDour(){
$data = Yii::$app->request->post('Rbac');
$user = $data['user'];
$role = $data['role'];
$item = Rbac::rolepower($role,$user);
foreach($item as $items){
$auth = Yii::$app->authManager;
$reader = $auth->createRole($items[]);
$auth->assign($reader, $items[]);
}
return $this->render('index',['message'=>'分配角色成功,您可以继续操作']);
}
public function beforeAction($action)
{
$action = Yii::$app->controller->action->id;
if(\Yii::$app->user->can($action)){
return true;
}else{
throw new \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
}
}
}
以下是model 代码
<?php
/**
* Created by PhpStorm.
* User: zhoukang
* Date: 2017/6/11
* Time: 18:41
*/ namespace frontend\models; use yii\base\Model;
use yii;
use db;
class Rbac extends Model
{
public $role;
public $power;
public $user;
public function rules(){
return[ ];
}
public function attributeLabels()
{
return[
'role'=>'角色',
'power'=>'权限',
'user'=>'用户'
];
}
static public function getrole($tablename){
$sql = "select name from $tablename where TYPE = 1";
$data = Yii::$app->db->createCommand($sql)->queryAll();
return $data;
}
static public function getpower($tablename){
$sql = "select name from $tablename where TYPE = 2";
$data = Yii::$app->db->createCommand($sql)->queryAll();
return $data;
}
static public function rolepower($role,$power){
$arr = array();
foreach($role as $value) {
foreach ($power as $v) {
$arr[] = array($value, $v);
}
}
return $arr;
}
static public function getuser($tablename){
$sql = "select id,username from $tablename ";
$data = Yii::$app->db->createCommand($sql)->queryAll();
return $data;
} }
view 层代码就没必要写了吧
yii rbac管理的更多相关文章
- Yii rbac原理和实践
Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...
- YIi 权限管理和基于角色的访问控制
验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...
- yii rbac
一.简介 什么是rbac ? rbac是就是基于角色的访问控制. yii提供一套基础的底层接口,我们知道,rbac经历好几个阶段,从rbac0到rbac3,从基础的用户.角色.权限,到动态的rbac处 ...
- YII RBAC基于角色的访问控制
基于角色的访问控制( Role-Based Access Control ),是一种简单的而又强大的集中访问控制.基于Yii Framework 的 authManager 组件实现了分等级的 RBA ...
- [Yii][RBAC]Yii中应用RBAC完全指南
开端筹办 Yii供给了强大的设备机制和很多现成的类库.在Yii中应用RBAC是很简单的,完全不须要再写RBAC代码.所以筹办工作就是,打开编辑器,跟我来. 设置参数.建树数据库 在设备数组中,增长以下 ...
- Azure RBAC管理ASM资源
上一篇文章介绍了Azure基于ARM的RBAC,给不同的用户分配不同的权限. 但目前在国内使用的大部分用户还是以ASM的资源为主.比如:VM.Storage.Network.WebAPP.SQL Az ...
- 基于swoole框架hyperf开发的纯API接口化的后台RBAC管理工具hyperfly@v1.0.0发布
hyperfly@v1.0.0发布 本文地址http://yangjianyong.cn/?p=323转载无需经过作者本人授权 github地址:https://github.com/vankour/ ...
- PHP工作笔记:使用yii migrate管理、生成数据库
第一步:进入yii migrate 通过dos(我是win7系统,其他系统类似,就是进入字符界面)打开网站目录 phpStudy/WWW/local/ddc_dlss 输入 ./yii migrate ...
- YII 权限管理
CREATE TABLE IF NOT EXISTS `admin_role` ( `id` ) unsigned NOT NULL auto_increment, `name` ) NOT NULL ...
随机推荐
- python实现高速排序算法(两种不同实现方式)
# -*- coding: utf-8 -*- """ Created on Fri May 16 17:24:05 2014 @author: lifeix " ...
- PHP中数据类型转换的三种方式
PHP中数据类型转换的三种方式 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: 1.(int).(integer):转换成整形2.(float).(double).(real):转换成 ...
- 深度学习将会变革NLP中的中文分词——TODO 待好好细看
见:https://www.leiphone.com/news/201608/IWvc75oJglAIsDvJ.html TODO 待好好细看
- consul 集群安装
上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端.consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端.Ser ...
- jQuery不熟点总结
jQuery 事件 1 .trigger() 方法触发被选元素的指定事件类型. 2 .delegate() 事件委派 1.不占内存2.可以给未来元素(后期动态添加的元素)添加事件. 2. 添加元 ...
- 利用道格拉斯·普客法(DP法)压缩矢量多边形(C++)
1.算法描述 经典的Douglas-Peucker算法(简称DP法)描述如下: (1)在曲线首尾两点A,B之间连接一条直线AB,该直线为曲线的弦: (2)得到曲线上离该直线段距离最大的点C,计算其与A ...
- Gitlab 灾备措施
Gitlab创建备份 使用Gitlab一键安装包安装Gitlab非常简单,同样的备份恢复与迁移也非常简单.使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:ba ...
- 第7章 性能和可靠性模式 Failover Cluster(故障转移群集)
上下文 您已经决定在设计或修改基础结构层时使用群集以提供高度可用的服务. 问题 您应该如何设计一个高度可用的基础结构层,来防止因单台服务器或它所运行的软件出现故障而导致的服务丢失? 影响因素 在设计高 ...
- EditPlus修改主题方法
在“EditPlus.exe”或"EditPlus64.exe"所在的目录下找到"editplus_u.ini"文件(如果不存在就新建一个),修改这个文件即可更 ...
- 第一个TensorFlow程序
第一个TensorFlow程序 TensorFlow的运行方式分为如下4步: (1)加载数据及定义超参数 (2)构建网络 (3)训练模型 (4)评估模型和进行预测 import tensorflow ...