ThinkPHP3.2.3完整版中对Auth.class.php的使用

一,先创建数据表

1、think_auth_rule,规则表

id:主键,

name:规则唯一标识,

title:规则中文名称

status 状态:为1正常,为0禁用,

condition:规则表达式,为空表示存在就验证,不为空表示按照条件验证

DROP TABLE IF EXISTS `think_auth_rule`;
CREATE TABLE `think_auth_rule` (
    `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
    `name` char(80) NOT NULL DEFAULT ‘‘,
    `title` char(20) NOT NULL DEFAULT ‘‘,
    `type` tinyint(1) NOT NULL DEFAULT ‘1‘,
    `status` tinyint(1) NOT NULL DEFAULT ‘1‘,
    `condition` char(100) NOT NULL DEFAULT ‘‘,  # 规则附件条件,满足附加条件的规则,才认为是有效的规则
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

2、think_auth_group 用户组表
id:主键,

title:用户组中文名称,

rules:用户组拥有的规则id, 多个规则","隔开,

status 状态:为1正常,为0禁用

DROP TABLE IF EXISTS `think_auth_group`;
CREATE TABLE `think_auth_group` (
    `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
    `title` char(100) NOT NULL DEFAULT ‘‘,
    `status` tinyint(1) NOT NULL DEFAULT ‘1‘,
    `rules` char(80) NOT NULL DEFAULT ‘‘,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

3、think_auth_group_access 用户组明细表

uid:用户id,

group_id:用户组id

DROP TABLE IF EXISTS `think_auth_group_access`;
CREATE TABLE `think_auth_group_access` (
    `uid` mediumint(8) unsigned NOT NULL,
    `group_id` mediumint(8) unsigned NOT NULL,
    UNIQUE KEY `uid_group_id` (`uid`,`group_id`),
    KEY `uid` (`uid`),
    KEY `group_id` (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

4.既然是对后台管理员权限认证,所以还需要创建后台管理员表think_admin

DROP TABLE IF EXISTS `think_admin`;
CREATE TABLE `think_admin` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘管理员ID‘,
`username` varchar(255) DEFAULT NULL COMMENT ‘管理员账号‘,
`password` varchar(32) DEFAULT NULL COMMENT ‘管理员密码‘,
`ip` varchar(255) DEFAULT NULL COMMENT ‘最后登录IP地址‘,
`login_time` int(11) DEFAULT NULL COMMENT ‘最后登录时间‘,
`login_count` mediumint(8) NOT NULL COMMENT ‘登录次数‘,
`status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘账户状态,禁用为0 启用为1‘,
`create_time` int(11) DEFAULT NULL COMMENT ‘创建时间‘,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

5.创建一张网站会员用户表think_user,权限认证(后台管理员对用户表的增删改查的权限)

DROP TABLE IF EXISTS `think_user`;
CREATE TABLE `think_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘管理员ID‘,
  `username` varchar(255) DEFAULT NULL COMMENT ‘管理员账号‘,
  `password` varchar(32) DEFAULT NULL COMMENT ‘管理员密码‘,
  `ip` varchar(255) DEFAULT NULL COMMENT ‘最后登录IP地址‘,
  `login_time` int(11) DEFAULT NULL COMMENT ‘最后登录时间‘,
  `login_count` mediumint(8) NOT NULL COMMENT ‘登录次数‘,
  `status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘账户状态,禁用为0   启用为1‘,
  `create_time` int(11) DEFAULT NULL COMMENT ‘创建时间‘,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
#便于测试,插入几条数据

insert into think_user (`username`,`password`) values(‘zhangsan‘,‘123456‘);
insert into think_user (`username`,`password`) values(‘lisi‘,‘123456‘);
insert into think_user (`username`,`password`) values(‘wangwu‘,‘123456‘);

二,在使用Auth类前需要配置config.PHP

‘AUTH_CONFIG‘=>array(
        ‘AUTH_ON‘ => true, //认证开关
        ‘AUTH_TYPE‘ => 1, // 认证方式,1为时时认证;2为登录认证。
        ‘AUTH_GROUP‘ => ‘think_auth_group‘, //用户组数据表名
        ‘AUTH_GROUP_ACCESS‘ => ‘think_auth_group_access‘, //用户组明细表
        ‘AUTH_RULE‘ => ‘think_auth_rule‘, //权限规则表
        ‘AUTH_USER‘ => ‘think_admin‘//用户信息表
    )

写个公共控制器:

<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Auth;

//公共的权限认证控制器
class AuthController extends Controller {
	protected function _initialize(){
		//session不存在时,不允许直接访问
		if(!session(‘aid‘)){
			$this->error(‘还没有登录,正在跳转到登录页‘,U(‘Public/login‘));
		}

		//session存在时,不需要验证的权限
		$not_check = array(‘Index/clear/cache‘,
			‘Index/edit/pwd‘,‘Index/logout‘,‘Admin/admin_list‘,
			‘Admin/admin/list‘,‘Admin/admin/edit‘,‘Admin/admin/add‘);

		//当前操作的请求                 模块名/方法名
		if(in_array(MODULE_NAME.‘/‘.CONTROLLER_NAME.‘/‘.ACTION_NAME, $not_check)){
			return true;
		}

		//下面代码动态判断权限
		$auth = new Auth();
		if(!$auth->check(MODULE_NAME.‘/‘.CONTROLLER_NAME.‘/‘.ACTION_NAME,session(‘aid‘)) && session(‘aid‘) != 1){
			$this->error(‘没有权限‘);
		}
	}
}

  

时间: 2024-08-29 17:20:37

ThinkPHP3.2.3完整版中对Auth.class.php的使用的相关文章

thinkPHP3.2.3完整版 在sae上面的部署

第一步:         thinkPHP3.2.3完整版,目录结构如下 第二步:在新浪sae上面创建一个新应用 第三步:用svn  down,下来会有两个文件:index.php.config.yaml 这时候,把下载好的   thinkPHP3.2.3完整版(Thinkphp文件夹.Public文件夹.index.php文件,其他的没有用)先在本地运行一下,先生成目录,[ps:sae上面没有写的权限], 然后给config.php配置如下: //'配置项'=>'配置值' /* 数据库设置 *

ThinkPHP3.2.3完整版创建前后台入口文件 http://jingyan.baidu.com/article/7e4409533fc1092fc1e2ef53.html

ThinkPHP3.2.3完整版创建前后台入口文件 1 2 3 4 5 6 7 分步阅读 ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的优秀的国产php框架,值得我们去探索学习"创建前台-后台入口文件" 工具/原料 Zend Studio 13.0.0(其他版本都行) 下载地址:http://pan.baidu.com/s/1hrddyh2 含thinkPHP完整版的项目 下载地址:http://www.thinkphp.cn/ windows 操作系统电脑一台

JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境.它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成. JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛

spring aop中pointcut表达式完整版

spring aop中pointcut表达式完整版 本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @within @annotation @args 0. 示例代码git地址 https://gitee.com/likun_557/spring-aop-demo 1.execute表达式 拦截任意公共方法 execution(public * *(..)) 拦截以set开头的任意方法 execution(

office2016 软件全集 官方下载免费完整版(含破解文件)不含垃圾软件 win10完美激活

office2016官方下载免费完整版是新一代办公软件,office2016官方下载免费完整版已经分享到下面,office2016官方下载免费完整版包括了Word.Excel.PowerPoint.OneNote.Outlook.Skype.Project.Visio以及Publisher等组件和服务.下面分享:office2016软件的下载.安装及激活. 本文来自互联网,按原教程安装结果中招了,因含有垃圾软件,所以决定改写,以免你懂的... 注册文件下载中含有垃圾软件,请按下面的步骤操作会跳过

Hadoop实战视频教程完整版 完整的Hadoop大数据视频教程

分享一套迪伦老师的完整的Hadoop实战视频教程,教程从学习Hadoop需要的数据库.Java和Linux基础讲起,非常适合零基础的学员,课程最后结合了实战项目演练,理论结合实战,深入浅出,绝对是当前最为完整.实战的Hadoop教程. <Hadoop大数据零基础高端实战培训系列配文本挖掘项目(七大亮点.十大目标)> 课程讲师:迪伦 课程分类:大数据 适合人群:初级 课时数量:230课时 用到技术:部署Hadoop集群 涉及项目:京东商城.百度.阿里巴巴 咨询QQ:1337192913(小公子)

rip路由协议 细节分析及实例配置【完整版】

rip路由协议 细节分析及实例配置[完整版] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从中发现自己不足的问题,也希望能够找到一些比较冷僻的问题,这样子才会有意思多了.   先上图,这个就是我准备做实验的基本用图了.现在已经按照图上标注的IP将所有基本配置设置好了. 在这个实验中,大多数都是基于ripv1,只有在需要比较的时候才会把版本改成ripv2,然后判断完之后再切换为ripv1: 第一步

信号处理必读的文章(-)—傅里叶分析之掐死教程(完整版)_转载至知乎

傅里叶分析之掐死教程(完整版)更新于2014.06.06 http://zhuanlan.zhihu.com/p/19763358 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师. 转载的同学请保留上面这句话,谢谢.如果还能保留文章来源就更感激不尽了. ——更新于2014.6.6,想直接看更新的同学可以直接跳到第四章———— 我保证这篇文章和你以前看过的所有文章都不同,这是12年

CSS3弹性盒模型flexbox完整版教程

文章目录 基础知识 属性介绍 display: flex | inline-flex; (适用于父类容器元素上) 请注意: flex-direction (适用于父类容器的元素上) flex-wrap (适用于父类容器上) flex-flow (适用于父类容器上) justify-content (适用于父类容器上) align-items (适用于父类容器上) align-content (适用于父类容器上) order (适用于弹性盒模型容器子元素) flex-grow (适用于弹性盒模型容