thinkphp rabc权限总结
今天晚上把ThinkPHP的权限分配弄明白了,心里的包袱立刻放下了,感觉那个爽啊!稍微记录一下。
背景:CMS系统开发(17do)。
项目分组:Admin(后台管理)、Home(前台显示)。
Admin组中包含ManagerAction、UserActin、ArticleAction三个控制器
第一部分:表关系对应(箭头是指数据来源)
其中表结构式根据RBAC规定的结构创建的。
定义结果:站长1能访问项目用户和文章的所有操作,管理员3只能对文章模块操作不能访问用户模块。
第二部分:项目配置
项目的config.php文件中添加
//权限分配设置
'USER_AUTH_ON'=>true, //是否需要认证
'USER_AUTH_TYPE'=>1, //认证类型
'USER_AUTH_KEY'=>'userId', // 认证识别号
'USER_AUTH_MODEL'=>'user',//模型实例(用户表名)
'REQUIRE_AUTH_MODULE'=>'User', //需要认证模块
'NOT_AUTH_MODULE'=>'', //无需认证模块
'USER_AUTH_GATEWAY'=>'/Public/login', //认证网关
//RBAC_DB_DSN 数据库连接DSN
'RBAC_ROLE_TABLE'=>'do_role', //角色表名称
'RBAC_USER_TABLE'=>'do_role_user', //用户和角色对应关系表名称
'RBAC_ACCESS_TABLE'=>'do_access', //权限分配表名称
'RBAC_NODE_TABLE'=>'do_node', // 权限表名称
第三部分:权限信息写入控制器
public function checkUser(){
//表单数据不能为空
if($this->_post('username')&&$this->_post('password')&&$this->_post('verifycode')){
$pwd= $this->_post('password');
$username= $this->_post('username');
//验证码是否正确
$verify= $this->_post('verifycode');
if($this->_session('verify')!= md5($verify)){
$this->error("验证码错误");
}else{
//创建数据库对象
$user=M('user');
//根据用户名查询
$cond['username']=$username;
$cond['active']=array('gt',0);
//加载RBAC类
import('ORG.Util.RBAC');
//通过authenticate读取用户信息
$result=RBAC::authenticate($cond);
//dump($result);
if($result){
if($result['password']==md5($pwd)){
$_SESSION[C('USER_AUTH_KEY')]=$result['id'];
$_SESSION["name"]=$result['name'];
//使用saveAccessList缓存访问权限
RBAC::saveAccessList();
$this->display('Manager:index');
}else{
$this->error("用户密码错误");
}
}else{
$this->error("用户名不存在或已经被禁用");
}
}
第四部分:创建验证权限控制器
class CommonAction extends Action{
//_initialize()方法是ThinkPHP提供的入口方法,类似于原PHP中__condition()构造函数。可以存放所有公用信息。
function _initialize(){
//判断是否开启认证,并且当前模块需要验证
if(C('USER_AUTH_ON')&&!in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))){
//导入RBAC类,开始验证
import('ORG.Util.RBAC');
//通过accessDecision获取权限信息
if(!RBAC::AccessDecision()){
//没有获取到权限信息时需要执行的代码
//1、用户没有登录
if(!$_SESSION[C('USER_AUTH_KEY')]){
$url= U('Public/login');
$this->error("您还没有登录不能访问",$url);
}
$this->error("您没有操作权限");
}
}
}
}
第五部分:验证控制器调用
只要需要权限验证的控制器继承CommonAction就可以啦!
使用admin账号登陆能正常访问
使用xiaoxiao账号登陆后不能访问用户列表页面
转载于:https://www.cnblogs.com/zoupufa/p/4097646.html
thinkphp rabc权限总结相关推荐
- thinkphp mysql权限管理_TP thinkphp 权限管理 权限认证 功能
目前,在tp框架中做权限管理 分rbac(老)与auth(推荐)认证方式: 老的tp版本中封装的是rbac认证: 新一点的都开始使用auth方式管理了.推荐使用此方式: 实现步骤一:引入类库Auth. ...
- crontab fastadmin thinkphp 定时任务权限不足
项目场景: 项目正常运行,测试突然反馈说出现异常,程序闪退,界面闪退 问题描述: 查看日志报错 Permission denied 权限不足 问题原因,定时是用root执行,项目运行是www用户执行 ...
- 一个页面区分管理者和普通用户如何设计_产品经理要做的操作权限/数据权限设计...
产品经理在工作中还需要知道一个:用户权限设计能力.权限设计理念贯穿于后台产品.以及用户前端产品. 权限能力包括两类:数据权限.系统操作权限 有的人会好奇,为什么前端产品会有有权限管理的要求?接下来我将 ...
- Thinkphp中Auth认证
权限管理在thinkphp有两种方式,比较常见用是RBAC,也是比较人用,容易理解,是基于节点的权限管理,Auth也可以做权限管理基于规则的权限管理,下面分别说说 1,Thinkphp RBAC权限管 ...
- 爆破专栏丨Spring Security系列教程之Spring Security的四种权限控制方式
原创:一一哥 前言: 在前面的章节中,一一哥 已经给大家介绍了Spring Security的很多功能,在这些众多功能中,我们知道其核心功能其实就是认证+授权. 在前面我们分别基于内存模型.基于默认的 ...
- 李炎恢+php+下载,李炎恢thinkphp视频教程
课程目标: 学习ThinkPHP3.2.1的使用方法. 适合对象: 适合有一定PHP基础,对ThinkPHP框架感兴趣的用户. 学习条件: 有面向对象基础,有MVC基础等. 课程目录 框架入门 01. ...
- ThinkPHP RBAC如何自动获取所有模块的函数
之前我写过一个例子,关于ThinkPHP RBAC权限控制的,后来又研究了下,发现在真实的情况中,很多crm,cms等,有需要去获取RBAC所有模块,然后进行权限分配等操作,或者增加删除模块. 所以就 ...
- 收藏这几个开源管理系统做项目,领导看了直呼牛X!
项目 SCUI Admin 中后台前端解决方案 Vue + .NetCore 前后端分离的快速发开框架 next-admin 适配移动端.pc的后台模板 django-vue-admin-pro 快速 ...
- 【工具】开发环境之vagrant
vagrant遭遇macOS bug看图 分析问题 mac的vagrant虚拟机ubuntu14.04开发环境,thinkphp没有权限创建文件,怎么搞? 在windows使用vagrant是没有遇到 ...
最新文章
- 简单易懂棒棒哒的视频传输工具!
- boost::range模块uniqued相关的测试程序
- JavaScript基础总结(五)——Math对象
- nginx学习之详细安装篇(二)
- mysql 上级组织参数值_MYSQL组织结构设计构思(快速查上级和下级)
- 思考XSS攻击和跨站伪造请求CSRF
- 原 matplotlib命令与格式:系统字体与显示中文
- 转: 技巧/诀窍:在ASP.NET中重写URL
- GB28181国标协议
- IIS DNS服务器搭建
- TCPUDP调试工具 Linux 版
- 线性方程组求解——基于MTALAB/Octave,Numpy,Sympy和Maxima
- sparknbsp;项目启动的时候报出如下错误
- 批量更改Excel数据透视表字段汇总方式
- java数据结构与算法之双链表设计与实现
- UnityMesh 博文收藏
- linux安装及配置mycat eye可视化监控界面
- 半导体测试机ATE简介
- 独立站社交媒体运营策略
- Error in nextTick: “NotFoundError: Failed to execute ‘insertBefore‘ on ‘Node‘: The node before which
热门文章
- uniapp 原生安卓开发插件(module),以及android环境本地调试(一)
- 基于Flutter开发网站转换成APP源代码 网站生成APP源代码带控制端
- 【树莓派不吃灰】IO篇① GPIO 开发环境
- 考研英语阅读关于计算机课堂教学,2016考研英语阅读真题逐句拆分解析(165)...
- 一文带你看懂菜鸟程序员和大神的区别!
- java 静态类 new_Java中为静态内部类不能被new呢?
- HTML5怎么创建第一个步骤,创建网站的一般步骤是什么,流程有哪些?
- Ueeshop产品整体说明
- Android仿微信选择图片
- 扁平化设计配色参考网站:FlatUIColors