thinkphp下的RABC 实现——2015/5/7
来源:互联网 发布:推荐好的网络公开课 编辑:程序博客网 时间:2024/05/24 07:22
目前有一个问题:
虽然给用户及角色分配了权限,也实现对应的权限的显示
但是用户可以通过显示修改url地址达到访问其他权限的目的
解决:
每次用户访问的控制器和方法都需要和对应的角色里边的ac信息进行比较
ac信息里边存在这个控制器和方法就允许访问,否则禁止访问
技术角度:
在每个控制器被实例化执行的同时就判断当前的控制器和方法是否允许角色访问
为了程序维护方便,给普通控制器制作父类控制器,在父类控制器的构造方法里边做控制器和方法的过滤工作。
1. 在新父类控制器AdminController里边实现每次访问控制器和操作方法过滤
a) 具体限制分三种情况
i. 自定义方法不进行权限限制(Index/head left right Manager/login)
ii. 系统管理员也不进行权限限制
iii. 当前用户允许访问的权限就是角色对应的权限
namespace Component;use Think\Controller;class AdminController extends Controller{ public function __construct() { parent::__construct(); $role = D('role'); $allowed_auth = array("Index-left","Index-index","Index-right","Index-head","Manager-login","Manager-logout"); $condition1 = $_SESSION['mg_role_id']; $role_info = $role->where("role_id=$condition1")->find(); $admin_auth = $role_info['role_auth_ac']; $module_action = CONTROLLER_NAME . "-" . ACTION_NAME; //echo $module_action; if($_SESSION['mg_role_id']==null){ $this->error('请先登录',U("Manager/login")); }else { if (!in_array($module_action, $allowed_auth) && $_SESSION['mg_role_id'] != 0 && strpos($admin_auth, $module_action) === false) { $this->error('没有访问权限', U("Index/index")); } } }}
0 0
- thinkphp下的RABC 实现——2015/5/7
- Thinkphp下的RABC学习——2015/5/6
- thinkPHP的RABC管理
- Thinkphp下的RABC Role的显示和修改
- ThinkPHP 用RBAC::saveAccessList()方法了解RABC的四张表。
- 搭建 rabc 后台系列教程(六)——规则的讲解 [ 2.0 版本 ]
- Thinkphp下的RBAC权限管理完结——2015/5/12
- yii2 rabc 的使用和配置
- 搭建 rabc 后台系列教程(三)—— rbac 详细操作 [ 2.0 版本 ]
- ThinkPHP下实现Word导出
- nginx下ThinkPHP的url重写实现伪静态url
- ThinkPHP分页的实现
- thinkPHP分页的实现
- yii 权限控制(yii-admin 和 rabc的安装)
- Yii2 RABC
- thinkphp下ueditor的使用
- Thinkphp Nginx下的配置
- thinkphp下mongo的操作
- Matlab画图命令介绍
- 阅读内核源码 VIM+Ctags
- 用实例给新手讲解RSA加密算法
- 【使用JBoss 7开发Java EE 6】EJB引用第三方包
- Java知识(009)--奥特曼打小怪兽
- thinkphp下的RABC 实现——2015/5/7
- 第三章第二十六题
- 编程思想之消息机制
- POJ 3281 — Dining
- window.event对象详细介绍
- linux 高级IO 磁盘映射IO
- springMVC一路总结(一)
- Linux 进程的 Uninterruptible sleep(D) 状态
- linux 线程 pthread