首页 > Web开发 > 详细

ThinkPHP权限问题

时间:2017-03-15 12:15:17      阅读:227      评论:0      收藏:0      [点我收藏+]
 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权限问题

原文:http://www.cnblogs.com/pclhome/p/6553020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!