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 ...
随机推荐
- string字符串常量池在内存中的位置
这里仅仅是举个简单的样例说明字符串常量池在内存中的位置. 闲言少叙,直接上代码. <span style="font-size: large;">import java ...
- 如何让 ssh 允许以 root 身份登录
默认情况下,Pack 上的 root 用户不能用通过密码来远程登录,可以用一下命令来做:(注意要在 root 权限下) sed -i 's/PermitRootLogin\swithout-passw ...
- Linux - xshell 链接CentOS 设置高亮
默认是黑白的! 用了vim 指令还是黑白的. 两种途径设置,一种是通过Alt+P. 一种是选择配色方案来设置.
- hdoj--1829--A Bug's Life(带权并查集)
A Bug's Life Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- Nginx实战系列之功能篇----后端节点健康检查
目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址: ...
- k8s Job、Cronjob 的使用
Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束.而CronJob则就是在Job上加上了时间调度. Job 我们用Job这个资源对象来创建一个任务,我们定一个Job来 ...
- webpack入门 --初级压缩
1.新建一个文件夹,再初始化npm: npm init 2.安装webpack,首先要全局安装,再本地安装: npm install webpack -g // 全局安装 npm install we ...
- Codeforces Round #449
960 asteri 1384 492 00:04 -1 892 01:33 960 PEPElotas 1384 488 00:06 896 00:26 960 ...
- 根据业务自己设计的.NET工厂模式架构
最近项目的架构需要做调整优化,根据业务需要写了一个简单的工厂模式架构 项目介绍:整个系统分为三大平台(这里用A,B,C来标示),每个平台又细分为多个APP客户端(每个APP都有appid来区分) 因为 ...
- auto_ftp_sh
#!/usr/bin/env python # -*- coding:utf-8 -*- import paramiko import time mydate = time.strftime( ...