您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-auth权限控制
发布时间:2017-09-19 11:56:06编辑:雪饮阅读()
auth权限控制宏观业务逻辑一览:
(1)登录模块
(2)权限检查模块
(3)建立auth权限控制所需的数据表
(4)数据库-规则(功能)表
(5)数据库-功能分组(归属)表
(6)数据库-用户关联功能分组表
auth权限控制实践-(1)登录模块:
在应用目录下的Admin模块目录中的控制器目录中建立LoginController.class.php如下:
<?php
namespace Admin\Controller;
use Think\Controller;
class LoginController extends Controller{
public function index(){
if(IS_POST){
$login=array();
switch (I('user',null,false)){
case 'admin' :
$login['uid']=1;
$login['user']='admin';
break;
case 'test' :
$login['uid']=2;
$login['user']='test';
break;
case 'guest' :
$login['uid']=3;
$login['user']='guest';
break;
default:
$this->error('不存在此用户');
}
if(count($login)){
session('auth',$login);
$this->success('登录成功!',U('Index/index'));
}
}
else{
$this->display();
}
}
}
建立该控制器的模板:
建立Admin->View->Login->index.html如:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<p>admin为超级管理员不用检查权限,所有权限;test为测试用户,没有权限(无法登陆),guest为游客仅仅可以登录</p>
<form method="post" action="<{:U('Login/index')}>">
<p>用户名:<input type="text" name="user" /></p>
<p><input type="submit" name="登录" /></p>
</form>
</body>
</html>
然后建立后台首页控制器(登录成功后可见):
为了方便,就不要模板了,直接一个控制器中输出就行。
这里继承了一个auth权限控制类,在下一步骤来建立。
<?php
// 本类由系统自动生成,仅供测试用途
namespace Admin\Controller;
use Common\Controller\AuthController;
class IndexController extends AuthController{
public function index(){
echo "后台首页";
}
}
auth权限控制实践-(2)权限检查模块:
在应用目录的核心模块Common中建立控制器目录Controller并在该目录中建立AuthController.class.php如:
<?php
namespace Common\Controller;
use Think\Controller;
use Think\Auth;
class AuthController extends Controller{
protected function _initialize(){
$sess_auth=session('auth');
if(!$sess_auth){
$this->error('非法访问!正在跳转到登录页',U('Login/index'));
}
//如果是超级管理员的话,就不用验证权限了,给予所有权限
if($sess_auth['uid']==1){
return true;
}
//如果不是管理员则进行权限判断
$auth=new Auth();
if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,$sess_auth['uid'])){
$this->error('没有权限',U('Login/index'));
}
}
}
auth权限控制实践-(3)建立auth权限控制所需的数据表:
在/ThinkPHP/Library/Think/Auth.class.php中将三个表的创建语句复制出来放在你的数据库中执行。
(4)数据库-规则(功能)表
该表中的id字段为下一步骤中要分析的表的rules字段关联。
name字段为访问url规则,如Admin/Index/index
title字段为每个规则的名称
该表添加数据如:
(5)数据库-功能分组(归属)表
该表的每条记录都是一个功能组,title字段为每组的组名,rules字段为该组所能执行的url规则,用上一步骤中所分析表中的id来关联,若该组可以执行多个url规则,则用逗号将id分隔。
该表添加数据如:
(6)数据库-用户关联功能分组表
该表用来绑定用户和功能组的关联关系。
uid为用户id,group_id为上一步骤中所分析的表的id字段。
该表为每个用户添加所属功能组。
该表添加数据如:
关键字词:thinkphp3.2.1,auth,权限,控制