以下是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管理的更多相关文章

  1. Yii rbac原理和实践

    Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...

  2. YIi 权限管理和基于角色的访问控制

    验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...

  3. yii rbac

    一.简介 什么是rbac ? rbac是就是基于角色的访问控制. yii提供一套基础的底层接口,我们知道,rbac经历好几个阶段,从rbac0到rbac3,从基础的用户.角色.权限,到动态的rbac处 ...

  4. YII RBAC基于角色的访问控制

    基于角色的访问控制( Role-Based Access Control ),是一种简单的而又强大的集中访问控制.基于Yii Framework 的 authManager 组件实现了分等级的 RBA ...

  5. [Yii][RBAC]Yii中应用RBAC完全指南

    开端筹办 Yii供给了强大的设备机制和很多现成的类库.在Yii中应用RBAC是很简单的,完全不须要再写RBAC代码.所以筹办工作就是,打开编辑器,跟我来. 设置参数.建树数据库 在设备数组中,增长以下 ...

  6. Azure RBAC管理ASM资源

    上一篇文章介绍了Azure基于ARM的RBAC,给不同的用户分配不同的权限. 但目前在国内使用的大部分用户还是以ASM的资源为主.比如:VM.Storage.Network.WebAPP.SQL Az ...

  7. 基于swoole框架hyperf开发的纯API接口化的后台RBAC管理工具hyperfly@v1.0.0发布

    hyperfly@v1.0.0发布 本文地址http://yangjianyong.cn/?p=323转载无需经过作者本人授权 github地址:https://github.com/vankour/ ...

  8. PHP工作笔记:使用yii migrate管理、生成数据库

    第一步:进入yii migrate 通过dos(我是win7系统,其他系统类似,就是进入字符界面)打开网站目录 phpStudy/WWW/local/ddc_dlss 输入 ./yii migrate ...

  9. YII 权限管理

    CREATE TABLE IF NOT EXISTS `admin_role` ( `id` ) unsigned NOT NULL auto_increment, `name` ) NOT NULL ...

随机推荐

  1. 【入门篇】ANDROID开发之BUG专讲

    话说诸葛亮是一个优秀的程序员,每个锦囊都是应对不同的case而编写的.可是优秀的程序员也敌只是更优秀的bug.六出祈山.七进中原,鞠躬尽瘁,死而后已的诸葛亮仅仅由于有一个错误的case-马谡,整个结构 ...

  2. HDU 4607 Park visit (求树的直径)

    解题思路: 通过两次DFS求树的直径,第一次以随意点作为起点,找到距离该点距离最远的点,则能够证明这个点一定在树的直径上,然后以该点为起点进行DFS得到的最长路就是树的直径. 最后的询问,假设K &l ...

  3. HDU 2027 汉字统计

    汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. 国内物联网平台初探(三) ——QQ物联·智能硬件开放平台

    平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用户与设备.设备与设备.设备与服务之间的联动. 实现用户与设 ...

  5. 如何提升SQL语句的查询性能

    在对数据库进行操作时,如果SQL语句书写不当,对程序的效率会造成很大影响. 提高SQL效率可以从一下几个方面入手: 1,数据库设计与规划 Primary Key字段的长度尽量小,能用small int ...

  6. php obstart

    PHP ob_start() 函数介绍 2010-03-29 php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数. ob_start([string output_ ...

  7. [CF1139 E] Maximize Mex 解题报告 (二分图匹配)

    interlinkage: https://codeforces.com/contest/1139/problem/E description: 有$n$个学生,$m$个社团,每个学生有一个能力值,属 ...

  8. java基本数据类型(二)和分支结构

    基本数据类型(四类八种):不能为null一.整数型 byte----2的8次方 short----2的16次方 int----2的32次方 long----2的64次方二.浮点型 float----4 ...

  9. POJ 2752 KMP中next数组的应用

    题意: 让你从小到大输出给的字符串中既是前缀又是后缀的子串的长度. 思路: 先要了解这个东西: KMP中next数组表示的含义:记录着字符串匹配过程中失配情况下可以向前多跳几个字符,它描述的也是子串的 ...

  10. web前端处理订单待支付倒计时计算显示问题

    在商城类项目的时候,有很多待支付的订单,有时候在订单列表页面会分别显示倒计时,就是页面会有很多倒计时的订单. 处理方法: 1.调用后端接口拿到所有的订单,获取所有的倒计时订单,获取到期时间(尽量时间戳 ...