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代码

thinkphp和onethink之权限管理

ThinkPHP权限问题

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

thinkphp 3.2.3 rbac 超级管理员可登录 其他提示没有权限

超级有用的9个PHP代码片段