码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP权限问题

时间:2017-03-15 12:15:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:log   status   前台   module   权限表   php   管理   检查   stat   

 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权限问题

标签:log   status   前台   module   权限表   php   管理   检查   stat   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!