YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

时间:2022-08-26 14:45:23

0x01 前言

  • srbac的原理:

    YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢。我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和Controller,每个控制器中又有许多方法,就是以action开头的执行动作的函数,函数之中可以使用render渲染视图。srbac模块就是控制这个action开头的执行动作的函数来实现权限控制的。而且这个权限控制是基于登陆的用户来完成的(登陆用户的记录用的是Yii::app()->user->login()这个方法实现的)。什么用户能访问什么样的action开头执行动作的模块。这个就是srbac模块的原理

  • srbac的实现:

    YII框架srbac模块是如何实现的呢,实际上是通过3个东西来确定的呢?用户、角色、任务这三个东西决定的,用户就是登陆YII框架的用户,角色可以是在srbac的管理页面中的新建的(srbac模块中有一个超级管理员角色Authority,是默认的,用户要想登陆srbac模块必须要有这个权限),还有一个就是任务,任务当中放的就是控制器中的action方法(就是刚才上面说的)。比如我有个action方法actionIndex(浏览器中的访问方式是:控制器/index),我把这个方法放到一个任务中(假如这个任务的名字是project),之后我新建一个角色叫admin,之后我把project放到admin角色中,最后将admin角色赋予给我要的用户,假如有一个用户叫cxy,我把admin角色赋给他。之后你们觉得我在登陆了cxy用户,能不能访问这个这个actionIndex方法。答案是能,逻辑图就是cxy(用户)->admin(角色)->project(任务)->actionIndex(方法)。

0x02 srbac配置方法

1.首先新建一个项目,我定义为srbac

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

2.安装成功

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

3.在数据库中新建一个表user,这个表马上配置的时候需要用,这个里面新建了好几个用户

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

4.使用gii模块(删除注释,这里我创建了一个admin模块方便以后操作),配置数据库(这个根据自己配),如果这个不会的话…

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

5.将下载的srbac模块复制粘贴到modules文件夹中(我下载的版本是srbac_1.3beta,不会下载的可以到我博客资源区里面下载)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

6.修改protected/config/main.php文件红线为添加的

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

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

   'srbac' => array(
'userclass'=>'User', //用户表ActiveRecord模型
'userid'=>'Id', //用户表主键字段
'username'=>'username', //用户名
'delimeter'=>'@', //模块中添加operation时,插入Srbac之后的定界符。默认是:-
'debug'=>true, //默认是 false,只有当debug为false时,Srbac模块才能生效
'pageSize'=>10, //管理授权项页面显示的授权项个数,默认是15
'superUser' =>'Authority', //建议将此名称改为超级管理员名称,有利于角色的统一
'css'=>'srbac.css',//路径别名,目录为srbac/css/srbac.css
//'layout'=>'application.views.layouts.main', //布局视图文件别名,默认为application.views.layouts.main
// 'layout'=>'application.modules.srbac.views.layouts.layoutSrbac',
'notAuthorizedView'=>'srbac.views.authitem.unauthorized', //用户访问没有授权页面显示的视图
'alwaysAllowed'=>array(//允许任何人访问的操作(动作方法)
'SiteLogin','SiteLogout','SiteIndex',
'SiteError', 'SiteContact'
),
'userActions'=>array('Show','View','List'), //分配给用户的默认操作
'listBoxNumberOfLines' => 15,//列表框的行数,默认是10
'imagesPath' => 'srbac.images', //Srbac模块中相关图片保存路径
'imagesPack'=>'noia', //模板名称,noia或tango
'iconText'=>true, //图标旁边是否显示文字,默认是false
'header'=>'srbac.views.authitem.header', //头部信息
'footer'=>'srbac.views.authitem.footer', //底部信息
'showHeader'=>true, //是否显示头部信息,默认是:false
'showFooter'=>true, //是否显示底部信息,默认是:false
'alwaysAllowedPath'=>'srbac.components', //总是允许访问:组件路径
),

PS:注意这里debug一定要设置为true,因为上面我说到只有用户有超级管理员才能访问这个srbac这个模块,所以我们开启debug调试模式,这样任何用户都可以访问srbac这个模块

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

'authManager'=>array(
// 类SDbAuthManager在srbac模块中的路径(别名),注意大小写
'class'=>'application.modules.srbac.components.SDbAuthManager',
// 使用的数据库的组件名
'connectionID'=>'db',
// 下面是3个数据表,后面再说每个表的作用
// The itemTable name (default:authitem)
'itemTable'=>'items',
// The assignmentTable name (default:authassignment)
'assignmentTable'=>'assignments',
// The itemChildTable name (default:authitemchild)
'itemChildTable'=>'itemchildren',
),

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

6.创建srbac模块需要使用的表User.php,为什么表的名字为User,请看上面配置的userclass这个选项

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

7.点击安装之后,登陆srbac模块

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

PS:这里设置中文页面的方法首先更改main.php文件(别问我在哪里,上面有),添加如下一行

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

并且在srbac这个模块中的message文件夹中将zh文件夹更改为zh_cn,这样就能实现中文显示了YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

以上就是安装srbac模块的方式

0x03 srbac模块的使用方法

1.随便新建一个控制器CxyController.php(这里注意继承的是SBaseController,SBaseController继承Controller),这里控制器有3个方法

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

2.之后进入srbac页面进行配置,上面讲过action执行的方法需要存放在任务之中,那怎么导入action的方法呢

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

3.上面的红线中的方法就是我们刚刚创建的方法,这里会自动识别(因为继承了SBaseController这个类,类中会自动记录)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

4.上面那张图可以看到这个就是我们刚才添加的方法,之后添加两个任务,一个project1和project2

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

5.新建两个角色test1和test2

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

6.数据库多建几个用户

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

7.之后将YII系统的登陆系统连接到我们的数据库中,更改protected\components\UserIdentity这个文件,尤其是图中划线的这个方法一定要写。这个主要是什么意思呢,就是系统登陆的时候用的是我们的数据库中的账号和密码。

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

8.刚才我们的控制器中不是有3个方法吗,一个是index,一个是user,一个是admin之后我们设置只有admin用户能访问admin方法,只有demo用户能访问user方法,index方法先不设置。

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

9.配置完毕,之后设置debug为false就是不调试了

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

10.之后访问index.php?r=cxy/user,就是访问user方法,访问的时候会自动跳到登陆界面,首先登陆admin测试

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

11.显示无权访问,因为我们刚才配置的时候是指定admin只能访问admin这个控制器的方法,那么我们访问admin这个控制器的方法

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

反之登陆用户demo,在测试一下

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

0x04 总结

写了这么多手都酸了,以上就是srbac的原理和如何使用,不想说了…

PS:如果认为我这个博客有什么问题或者有修改意见的,请一定要告诉我,非常感谢(我的邮箱2412875746@qq.com)

YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)的更多相关文章

  1. Yii框架中使用SRBAC作为权限管理模块时遇到的问题

    Yii框架中使用SRBAC作为权限管理模块时遇到的问题   看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...

  2. Yii框架中安装srbac扩展方法

    首先,下载srbac_1.3beta.zip文件和对应的blog-srbac_1.2_r228.zip 问什么要下载第二个文件,后面就知道了. 按照手册进行配置: 解压缩srbac_1.3beta.z ...

  3. 使用php实现权限管理模块

    在说权限管理模块前,应该先知道权限管理模块要有哪些功能: 1.用户只能访问,指定的控制器,指定的方法 2.用户可以存在于多个用户组里 3.用户组可以选择,指定的控制器,指定的方法   4.后台可以添加 ...

  4. C# EasyUI树形结构权限管理模块

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...

  5. Yii框架中集成phprpc、hprose

    在项目开发的过程中有时候会涉及到对外提供接口供第三方程序调用或者是不同程序间需要相互通信,那么最通用的做法是用传统的SOAP方式来实现,用XML的文档格式来作为传输载体.但是这种方式不灵活,支持的数据 ...

  6. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. (十二)整合 Shiro 框架,实现用户权限管理

    整合 Shiro 框架,实现用户权限管理 1.Shiro简介 1.1 基础概念 1.2 核心角色 1.3 核心理念 2.SpringBoot整合Shiro 2.1 核心依赖 2.2 Shiro核心配置 ...

  8. Yii 框架中安装 memcache 及配置和测试

    安装php_memcache.dll扩展 1.首先将php_memcache.dll文件放入E:\server\php\ext目录下 (php_memcache.dll下载地址:http://wind ...

  9. 使用Yii框架中遇到的三个问题

    以下由我们在信易网络公司开发项目的时候终结出的一些经验 使用Yii框架中遇到的三个问题 1.main.php文件中欲引入全局变量的问题 还原一下此问题:在Yii框架中,main.php一般会作为整个应 ...

随机推荐

  1. 【学】React的学习之旅2 - React Component的生命周期

    分成三个状态: Mounted Update Unmounted Mounted:当我们看到组件在浏览器中从无到有的效果的时候,mounted已经结束了,这个组件已经被mounted了 有这个阶段有2 ...

  2. Yii2-admin RBAC权限管理的实现

    原文地址:http://www.open-open.com/lib/view/open1434638805348.html   http://wlzyan.blog.163.com/blog/stat ...

  3. iOS开发Swift篇—(八)函数(2)

    iOS开发Swift篇—(八)函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 func sum(num1: Int ...

  4. 编写一函数用来实现左右循环移位。函数原型为move(value,n);n>0时右移n位,n<0时左移|n|位。

    #include<stdio.h> #include<stdlib.h> int main(){ setbuf(stdout,NULL); int move(int,int); ...

  5. 2013 Multi-University Training Contest 5 Partition

    思路:五边形数定理!!! 五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性.欧拉函数的展开式如下: 亦即 欧拉函数展开后,有些次方项被消去,只留下次方项为1, 2, 5, 7, 12, ...

  6. 弹出输入内容prompt

    <script> window.onload = function(){ var oBtn = document.getElementById( "btn" ); oB ...

  7. EBS库存(INV)模块常用表

     select * from org_organization_definitions库存组织 select * from mtl_parameters组织参数 select * from mtl ...

  8. CR--同事分享学习

    1.持续发布是什么? 频繁地将软件的新版本,交付给质量团队或者用户,以供评审. 2.对接持续发布需要具备什么条件? 1)  测试自动化程度较高,持续发布的终态是不需要人工介入 2)  做到持续集成,持 ...

  9. 【Asia Yokohama Regional Contest 2018】Arithmetic Progressions

    题目大意:给定 N(1<N<=5000) 个不同元素组成的集合,求从中选出若干数字组成的等差数列最长是多少. 题解:直接暴力有 \(O(n^3)\) 的算法,即:枚举等差数列的前两个值,再 ...

  10. ArcPy中mapping常见函数及用法1

    arcpy的mapping模块常见属性方法总结1.如何获取当前地图文档: 方式:mxd = mapping.MapDocument("CURRTENT")引用本地或者网络文档(ar ...