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拓展中“用户已经获授权项”无法查看的更多相关文章

  1. 最简实例演示asp.net5中用户认证和授权(4)

    上篇: 最简实例演示asp.net5中用户认证和授权(3) 上面我们把自定义认证和授权的相关的最小基础类和要实现的接口都实现了,下面就是如何来进行认证和授权的配置. 首先我们要告诉系统,我们的用户和角 ...

  2. 最简实例演示asp.net5中用户认证和授权(3)

    上接: 最简实例演示asp.net5中用户认证和授权(2) 在实现了角色的各种管理接口后,下一步就是实现对用户的管理,对用户管理的接口相对多一些,必须要实现的有如下三个: 1 public inter ...

  3. 最简实例演示asp.net5中用户认证和授权(2)

    上接最简实例演示asp.net5中用户认证和授权(1) 基础类建立好后,下一步就要创建对基础类进行操作的类了,也就是实现基础类的增删改查(听起来不太高大上),当然,为了使用asp.net5的认证机制, ...

  4. 最简实例演示asp.net5中用户认证和授权(1)

    asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证 ...

  5. linux中用户和用户组的概念以及查看命令

    Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...

  6. mysql查询语句中用户变量的使用

    先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...

  7. Linux 系统中用户切换

    1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...

  8. SharePoint 中用户控件的开发及应用

    1.新建解决方案以及SharePoint项目,步骤比较简单略过,然后映射CONTROLTEMPLATES文件夹,在里面添加用户控件(仅场解决方案),如下图: 2.解决方案结构,如下图: 简单介绍一下, ...

  9. 如何查询Oracle中用户所有信息

    1.查看所有用户:   select * from dba_users;     select * from all_users;     select * from user_users;   2. ...

随机推荐

  1. Stixel_World(single)学习笔记

      1. 算法背景 Q: 如何有效处理数以百万的视差图数据(提供了每个像素的精确深度信息)? 以及如何在大量数据中找到所有相关的障碍物? 提出方法 “ stixel_world ”, It takes ...

  2. Java面试题汇总---基础版(附答案)

    基于我个人对面试的认知和招聘经验,在此我总结一下Java开发者的基础知识掌握要求,及应聘者面试的需要准备的内容. 首先,Java基础是每个面试官都会问到的,可能只是针对工作经验的多少,对问题追踪深度有 ...

  3. a=re.findall('b',c)报错提示:TypeError:expected string or buffer

    目的:想通过findall选取某个unicode编码的字符串列表(列表里面有元组) 问题:报错[TypeError:expected string or buffer] 现在测试下: 定义一个有元组的 ...

  4. Shiro授权流程

    1,授权中涉及的一些概念      [1]授权:访问控制,即在应用中认证用户能否访问的系统资源(如一个页面,一个按钮等).      [2]资源:在Web应用中反应为用户可以访问的URL.       ...

  5. MetInfo企业网站管理系统 5.3 全新安装

    在phpStudy\PHPTutorial\WWW的文件下创建MetInfo文件夹.把MetInfo5.3解压到MetInfo文件夹里 用浏览器访问127.0.0.1/MetInfo 同意安装 下一步 ...

  6. sql上传木马

    第十周笔记—SQLmap和sql注入上传木马 目录 第十周笔记—SQLmap和sql注入上传木马 SQL注入 上传木马 SQLmap 六大模块 命令 参数 三种请求方式 取得系统shell sqlma ...

  7. vue使用video.js解决m3u8视频播放格式

    今天被这个关于m3u8视频播放不了搞了一下午,这个项目所有的视频流都是m3u8格式的,后台给我们返回的都是m3u8格式的视频流,解决了好长时间,看了好多博客,只有这个博客给我点启发,去解决这个问题,请 ...

  8. 2.2.2python的BeautifulSoup库

    from bs4 import BeautifulSoupimport rebroken_html = '<ul class="country"><li>A ...

  9. C# 委托(delegate)、泛型委托和Lambda表达式

    目录 # 什么是委托 # 委托声明.实例化和调用 1.声明 2.委托的实例化 3.委托实例的调用 4.委托完整的简单示例 #泛型委托 1.Func委托 2.Action委托 3.Predicate委托 ...

  10. Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)

    每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)H ...