ThinkPHP权限问题
Posted 鲁山人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP权限问题相关的知识,希望对你有一定的参考价值。
1 <?php 2 namespace Common\Controller; 3 use Think\Controller; 4 use Think\Auth; 5 6 class AuthController extends Controller { 7 //判断用户是否有该操作的权限,并判断是否要将这个权限插入规则表 8 private function checkAuth() { 9 $user = session(‘result.username‘); 10 $uid = session(‘result.id‘); 11 $controllerIndex = MODULE_NAME."/".CONTROLLER_NAME."/".ACTION_NAME; 12 $dbAuthRule = M(‘auth_rule‘); 13 $map[‘name‘] = $controllerIndex; 14 $rule = $dbAuthRule->where($map)->select(); 15 16 //如果权限表中没有这个操作,就将其插入表中 17 if(!$rule) { 18 $data[‘name‘] = $controllerIndex; 19 $data[‘status‘] = ‘1‘; 20 $data[‘type‘] = MODULE_NAME; 21 $dbAuthRule->add($data); 22 } 23 24 //判断当前用户是否在登录状态 25 if (empty($user)) { 26 $this->error("请重新登录"); 27 die; 28 } 29 30 //实例化权限类,检查用户的访问权限 31 $auth = new Auth(); 32 //$test = $auth->check($controllerIndex, $uid); 33 if (!$auth->check($controllerIndex, $uid)) { 34 $this->error(‘您没有权限访问,请联系管理员‘); 35 } 36 } 37 //实例化AuthController时,会自动调用_initialize函数 38 protected function _initialize() { 39 $this->checkAuth(); 40 } 41 }
使用ThinkPHP框架时,在公共模块Common的Controller 建立AuthController类。之后无论是在前台模块或者后台模块中,在编写接口时,首先实例化AuthController,如果没有访问权限,会自动判断。当然前提是数据库中已建立Think/Auth中指定的表。
以上是关于ThinkPHP权限问题的主要内容,如果未能解决你的问题,请参考以下文章
Thinkphp模板开放给第三方编辑权限时,如何禁止模板使用php代码
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段