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 ...
随机推荐
- 公司须要内部的地图服务,准备自己去开发可是成本太高,如今有没有专门为企业提供GIS地图开发的产品呀?大概价格多少?
公司须要内部的地图服务,准备自己去开发可是成本太高,如今有没有专门为企业提供GIS地图开发的产品呀?大概价格多少?
- session 的工作原理
session.cookie_domain session.cookie_path session.name session.save_path session.use_cokies session_ ...
- xcode Automatic signing is unable to resolve an issue with the "ShowCar-IOS" target's entitlements
1.https://stackoverflow.com/questions/37806538/code-signing-is-required-for-product-type-application ...
- XML基础+Java解析XML +几种解析方式的性能比较
XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...
- luogu3369 【模板】 普通平衡树 Splay
题目大意 维护一个数据结构,满足以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x ...
- 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!
DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...
- hdoj--2063--过山车(最大匹配)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- java8新特性系列:[1]让你的eclipse支持java8
package com.anhui.jdk8; /** * 针对eclipse是否支持java8小测试 * MainClass * @author zhongzh * */ public class ...
- python之路——二分查找算法
楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...
- FTP协议讲解
FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP的目标是提高文件的共享性和可靠高效地传送数据. 在传输文件时,FTP 客户端程序先与服务器建立连接 ...