Yii的srbac拓展中“用户已经获授权项”无法查看
Yii的srbac拓展中“用户已经获授权项”点下拉框,选择一个有权限的用户时,根本无法列出权限。
原因是srbac把数据库的表中的ID默认为数字,像 123这样,但如果不是数字像这样 'y0f22ffc2fef712fd602a1ef64ab319t' 。那么这个是不会出来的,那么只能修改代码 了。

修改 \protected\modules\srbac\controllers\AuthitemController.php 文件中的 actionShowAssignments 方法
源代码如下
public function actionShowAssignments() {
$userid = isset($_GET["id"]) ? $_GET["id"] :
$_POST[Helper::findModule('srbac')->userclass][$this->module->userid];
$user = $this->module->getUserModel()->findByPk($userid);
$username = $user->{$this->module->username};
$r = array(0 => array(0 => array()));
if ($userid > 0) {
$auth = Yii::app()->authManager;
/* @var $auth CDbAuthManager */
$ass = $auth->getAuthItems(2, $userid);
$r = array();
foreach ($ass as $i => $role) {
$curRole = $role->name;
$r[$i] = $curRole;
$children = $auth->getItemChildren($curRole);
$r[$i] = array();
foreach ($children as $j => $task) {
$curTask = $task->name;
$r[$i][$j] = $curTask;
$grandchildren = $auth->getItemChildren($curTask);
$r[$i][$j] = array();
foreach ($grandchildren as $k => $oper) {
$curOper = $oper->name;
$r[$i][$j][$k] = $curOper;
}
}
}
// Add always allowed opers
$r["AlwaysAllowed"][""] = $this->module->getAlwaysAllowed();
$this->renderPartial('userAssignments', array('data' => $r, 'username' => $username));
}
}
我们把第 7 行的判断语句修改下 if ($userid > 0)
修改成 if (count($user)> 0) ,即可,修改后代码如下
public function actionShowAssignments() {
$userid = isset($_GET["id"]) ? $_GET["id"] :
$_POST[Helper::findModule('srbac')->userclass][$this->module->userid];
$user = $this->module->getUserModel()->findByPk($userid);
$username = $user->{$this->module->username};
$r = array(0 => array(0 => array()));
if (count($user) > 0) {
$auth = Yii::app()->authManager;
/* @var $auth CDbAuthManager */
$ass = $auth->getAuthItems(2, $userid);
$r = array();
foreach ($ass as $i => $role) {
$curRole = $role->name;
$r[$i] = $curRole;
$children = $auth->getItemChildren($curRole);
$r[$i] = array();
foreach ($children as $j => $task) {
$curTask = $task->name;
$r[$i][$j] = $curTask;
$grandchildren = $auth->getItemChildren($curTask);
$r[$i][$j] = array();
foreach ($grandchildren as $k => $oper) {
$curOper = $oper->name;
$r[$i][$j][$k] = $curOper;
}
}
}
// Add always allowed opers
$r["AlwaysAllowed"][""] = $this->module->getAlwaysAllowed();
$this->renderPartial('userAssignments', array('data' => $r, 'username' => $username));
}
}
修改后就能看到效果了,效果如下

如过不懂什么原因,可分析下源代码。
Yii的srbac拓展中“用户已经获授权项”无法查看的更多相关文章
- 最简实例演示asp.net5中用户认证和授权(4)
上篇: 最简实例演示asp.net5中用户认证和授权(3) 上面我们把自定义认证和授权的相关的最小基础类和要实现的接口都实现了,下面就是如何来进行认证和授权的配置. 首先我们要告诉系统,我们的用户和角 ...
- 最简实例演示asp.net5中用户认证和授权(3)
上接: 最简实例演示asp.net5中用户认证和授权(2) 在实现了角色的各种管理接口后,下一步就是实现对用户的管理,对用户管理的接口相对多一些,必须要实现的有如下三个: 1 public inter ...
- 最简实例演示asp.net5中用户认证和授权(2)
上接最简实例演示asp.net5中用户认证和授权(1) 基础类建立好后,下一步就要创建对基础类进行操作的类了,也就是实现基础类的增删改查(听起来不太高大上),当然,为了使用asp.net5的认证机制, ...
- 最简实例演示asp.net5中用户认证和授权(1)
asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证 ...
- linux中用户和用户组的概念以及查看命令
Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...
- mysql查询语句中用户变量的使用
先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...
- Linux 系统中用户切换
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- SharePoint 中用户控件的开发及应用
1.新建解决方案以及SharePoint项目,步骤比较简单略过,然后映射CONTROLTEMPLATES文件夹,在里面添加用户控件(仅场解决方案),如下图: 2.解决方案结构,如下图: 简单介绍一下, ...
- 如何查询Oracle中用户所有信息
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2. ...
随机推荐
- 异常——cmd下javac错误:编码GBK不可映射字符
在看菜鸟教程时候用记事本创建文件,之后用notepad++编辑后,运行出现错误. 首先从信息上知道这是编码的问题了.开始试了下再notepad++上打开文件选择标签栏的“Encoding”中的“enc ...
- Python之爬虫有感(一)
urllib.request.Request('URL',headers = headers)User-Agent 是爬虫和反爬虫斗争的第一步,发送请求必须带User—Agent使用流程: 1. ...
- 《ElasticSearch6.x实战教程》之分词
第四章-分词 下雨天留客天留我不留 本打算先介绍"简单搜索",对ES的搜索有一个直观的感受.但在写的过程中发现分词无论如何都绕不过去.term查询,match查询都与分词息息相关, ...
- Leetcode solution 291: Word Pattern II
Problem Statement Given a pattern and a string str, find if str follows the same pattern. Here follo ...
- c语言进阶11-算法设计思想
一. 算法设计的要求: 为什么要学算法? /* 输出Hello word! */ #include "stdio.h" void main() { printf("He ...
- 6.2.初识Flutter应用之路由管理
路由管理 路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewC ...
- sql注入------基于时间延迟benchmark函数注入脚本
#author:windy_2import requests urlx = 'http://127.0.0.1/?id= 1 and if((substr((select database()),' ...
- C# ORM简单原理
对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去. 在今日的企业环境中,把面向对象 ...
- 织梦(dede)底层模板概念、常用底层模板字段
织梦(dede)底层模板概念.常用底层模板字段 一.底层模板的概念以及调用方式: 1. 什么是底层模板? 底层模板不是一个模板! 他就是在实际页面当中所要显示的具体内容: 2. 底层模板的应用: 调用 ...
- ASP.NET Core MVC 之布局(Layout)
1.什么是布局 布局通常包含常见的用户界面元素,例如应用头,导航或菜单元素和页脚,如图: 常见的HTML结构(例如脚本和样式表)也经常被应用程序中许多页面使用.所有这些共享元素都可以在布局中定义,然后 ...