Yii中配置Srbac模块

2024-05-31 03:32
文章标签 配置 模块 yii srbac

本文主要是介绍Yii中配置Srbac模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Srbac 可以在如下地址下载:
Yii 扩展页面: http://www.yiiframework.com/extension/srbac/


要安装 srbac 模块,首先解压压缩文件到Yii应用的模块目录,如果把srbac作为一个模块的话,就要在protected文件夹下新建一个文件夹modules,然后把解压得到的文件夹复制过来。

在配置模块之前,首先我们需要建立一个用户信息的user表,用来存储我们需要权限操作的用户,并生成user表的Model,Model名称与Srbac配置中的'userclass'相同。

然后编辑配置文件如下:

在protected/config/main中

 

1.首先应该有db的配置:

'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=test,//请修改为项目的数据库名称
'emulatePrepare' => true,
'username' => 'root',//请修改为项目的数据库用户名
'password' => '',//请修改为项目的数据库密码
'charset' => 'utf8',
'tablePrefix' => 'tbl_',//请修改为项目的数据库表前缀
),

2.配置authManager组件:

 

在components下添加

//配置authManager,使用Srbac的SDbAuthManager'authManager'=>array('class'=>'application.modules.srbac.components.SDbAuthManager',//'class'=>'CDbAuthManager',// Manager 的类型'defaultRoles'=>array('guest'),//默认角色'itemTable' => 'item',//认证项表名称(可修改)'itemChildTable' => 'itemchild',//认证项父子关系(可修改)'assignmentTable' => 'assignment',//认证项赋权关系(可修改)),

items,assignments,itemchildren三个表的名字可随意改动。表结构请到framework/web/auth/schema-mysql.sql中查看


3.继续添加srbac配置

 

添加以下配置代码


'srbac' => array('userclass'=>'User', //可选,默认是 User'userid'=>'id', //可选,默认是 userid'username'=>'username', //可选,默认是 username'delimeter'=>' ',//模块中添加operation时,插入Srbac之后的字段'debug'=>true, //可选,默认是 false,只有当debug为false时,模块才能生效'pageSize'=>10, //可选,默认是 15'superUser' =>'Admin', //可选,建议将此名称改为超级管理员名称,有利于角色的统一'css'=>'srbac.css', //可选,默认是 srbac.css'layout'=>'application.views.layouts.main', //可选,默认是// application.views.layouts.main, 必须是一个存在的路径别名'notAuthorizedView'=>'srbac.views.authitem.unauthorized', // 可选,默认是 unauthorized.php//srbac.views.authitem.unauthorized, 必须是一个存在的路径别名'alwaysAllowed'=>array( //可选,默认是 gui'SiteLogin','SiteLogout','SiteIndex','SiteAdmin','SiteError', 'SiteContact'),'userActions'=>array(//可选,默认是空数组'Show','View','List'),'listBoxNumberOfLines' => 15, //可选,默认是10'imagesPath' => 'srbac.images', //可选,默认是 srbac.images'imagesPack'=>'noia', //可选,默认是 noia'iconText'=>true, //可选,默认是 false'header'=>'srbac.views.authitem.header', //可选,默认是// srbac.views.authitem.header, 必须是一个存在的路径别名'footer'=>'srbac.views.authitem.footer', //可选,默认是// srbac.views.authitem.footer, 必须是一个存在的路径别名'showHeader'=>true, //可选,默认是false'showFooter'=>true, //可选,默认是false'alwaysAllowedPath'=>'srbac.components', //可选,默认是 srbac.components// 必须是一个存在的路径别名),

4.导入模块Controller路径:

 

查看srbac属性列表可以得到每个属性的详细信息

导入 SbaseController(for using the auto checking access feature):

'import'=>array('application.modules.srbac.models.*','application.modules.srbac.controllers.SBaseController',),

5.安装完成

 

你可以访问http://localhost/app/index.php?r=srbac/authitem

进入安装页面后如果有变红的项目,说明你的配置有问题,请修改为正确的配置。然后点击安装。

然后完成安装,显示成功后,你进入项目,找到protected\modules\srbac \views\authitem\install可以把这个文件夹删掉,也可以重命名。然后找到protected\modules\srbac \controllers\AuthitemController.php

注释掉beforeAction方法中的:

//if(!$this->module->isInstalled() && $action->id != "install") {// $this->redirect(array("install"));// $this->actionInstall();// return false;//}

因为这个地方判断每次都是新安装srbac。当你安装完成后,这里就没用了。可以注释掉了。

再访问链接http://localhost/app/index.php?r=srbac/authitem/authitem

就可以看到管理界面了。

http://images.cnitblog.com/blog/465954/201404/031111375621725.jpg


6.项目配置

对于Srbac的基本安装完成之后,我们可以使用其自带的基础权限操作功能,但为使之更加符合我们实际项目的操作要求,我们还需要按照我们的习惯为其修改部分细节以及增加一些功能:

6.1 在我们的components文件夹中的Controller.php中,我们需要将本类的继承关系更改为:

class Controller extends SBaseController

http://images.cnitblog.com/blog/465954/201404/031111413905024.jpg

而我们其他的controller则继续继承Controller。

修改完成之后,我们的权限控制功能将由Srbac模块负责。

6.2 在Srbac中,我们将user的id作为判断该用户身份的唯一标识,如果在以前的项目中没有getId的方法,那我们需要在omponents的UserIdentity.php文件中重写getId的方法:

例:

public function getId(){   //重写getId()方法return $this->id;}

6.3 接口文件:

RBACUtility.php:

此文件应放入我们的Yii框架的extensions文件夹中,其中包含了我们项目中经常使用的几个与用户权限操作相关的接口。

6.4 数据库中的表:

为实现我们的权限的管理操作,我们在数据库中有三个表来存储我们角色、任务、操作的关系,我们可以根据项目的实际需求来修改或者合并部分数据表,表结构和每张表的作用请参见《Yii权限管理工具Srbac使用小结》。


文章来源于:http://www.cnblogs.com/lianche/category/520600.html

这篇关于Yii中配置Srbac模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017320

相关文章

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提