一、获取Auth类
1、ThinkPHP3.1.3完整版:http://www.thinkphp.cn/down/338.html
2、OneThink1.0正式版:https://github.com/liu21st/onethink

二、建立需要的数据表
打开Auth.class.php,将其中有关数据库的注释部分复制后,
到phpmyadmin中执行,
可得到三个表:think_auth_rule、think_auth_group、think_auth_group_access,
并按实际情况修改前缀。
实际上,这三个表的名称不是规定死的,可通过配置来进行更改,
如何更改,请看本文后面使用心得部分。
注意:OneThink附带和3.1.3中附带的的auth_rule表稍有不同(不影响使用的改变)。

三、建立用户表
要有自增id,其他随意。

四、添加认证规则
数据表:think_auth_rule

其中name是最重要的字段:分组/控制器/方法(3.1.3)模块/控制器/方法(3.2)。
顺序不能改变,大小写随意。Auth类中会统一转成小写。
不过,haran建议还是和项目中的命名规范统一。
其次是type。一般情况下设定为1。
(最后存入用户权限的就是type为1的规则)

五、添加用户组(角色)
数据表:think_auth_group

其中rules字段最为重要,就是控制哪个组有哪些权限。

六、添加用户和组对应关系

此表实际上就是member和auth_group的中间表,
规定哪个用户(uid)属于哪个组(group_id)

七、新建基础控制器并写入初始化方法
3.1.3
在项目的Lib/Action中新建CommonAction.class.php

  1. <?php
  2. class CommonAction extends Action{
  3. public function _initialize(){
  4. //类库位置应该位于ThinkPHP\Extend\Library\ORG\Util\
  5. import('ORG.Util.Auth');//加载类库
  6. $auth=new Auth();
  7. if(!$auth->check(GROUP_NAME . '/' . MODULE_NAME.'/'.ACTION_NAME,session('uid'))){
  8. $this->error('你没有权限');
  9. }
  10. }
  11. }

在Application/Common/Controller中新建CommonController.class.php

  1. <?php
  2. namespace Common\Controller;
  3. use Think\Controller;
  4. class CommonController extends Controller {
  5. public function _initialize () {
  6. $AUTH = new \Think\Auth();
  7. //类库位置应该位于ThinkPHP\Library\Think\
  8. if(!$AUTH->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, session('uid'))){
  9. $this->error('没有权限');
  10. }
  11. }
  12. }

八、新建后台首页

  1. <?php
  2. class IndexAction extends CommonAction {
  3. public function index () {
  4. echo '后台首页';
  5. }
  6. }
  1. <?php
  2. namespace Admin\Controller;
  3. use Common\Controller\CommonController;
  4. class IndexController extends CommonController {
  5. public function index () {
  6. echo '后台首页';
  7. }
  8. }

注意命名应和auth_rule表中的name完全对应。

使用心得:
一、使用Auth认证,只要表命名正确,甚至不必在config.php中定义任何一项即可使用。
二、如何进行自定义?
在项目的配置文件中定义:

  1. //Auth权限设置
  2. 'AUTH_CONFIG' => array(
  3. 'AUTH_ON' => true,  // 认证开关
  4. 'AUTH_TYPE' => 1, // 认证方式,1为实时认证;2为登录认证。
  5. 'AUTH_GROUP' => 'auth_group', // 用户组数据表名
  6. 'AUTH_GROUP_ACCESS' => 'auth_group_access', // 用户-用户组关系表
  7. 'AUTH_RULE' => 'auth_rule', // 权限规则表
  8. 'AUTH_USER' => 'member', // 用户信息表
  9. ),

其中AUTH_TYPE设为2后,在SESSION中就会有类似数组

  1. [_AUTH_LIST_31] => Array
  2. (
  3. [0] => admin/index/index
  4. [1] => admin/base/index
  5. [2] => admin/rbac/role
  6. [3] => admin/rbac/member
  7. [4] => admin/rbac/node
  8. )

改变以上的'AUTH_GROUP','AUTH_GROUP_ACCESS','AUTH_RULE','AUTH_USER'配置项,即可自定义Auth认证所需四张表,但注意加上表前缀。

thinphp中auth认证方法使用的更多相关文章

  1. laravel中的Auth认证:

    简介 Laravel 5.3 的 Auth 认证在 5.2 的基础上又有一些改变,本文说明如何在 Laravel 5.3 下做不同用户表的登录认证. Auth 认证原理简述 Laravel 的认证是使 ...

  2. 在AngularJS应用中实现认证授权

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAokAAAFwCAIAAABbwHY6AAAgAElEQVR4nOy9+XtcxbX3+/4H9z73jP ...

  3. Django用户认证系统(二)Web请求中的认证

    在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...

  4. Bootstrap+Thinkphp3.2+Auth认证+jquery-validator后台

    Auth权限认证 本例采用auth权限认证,用户和用户组采用多对多关系处理,自动添加rule规则,带有jquery-validator插件,自动控制菜单显示或隐藏.   config.php中的配置 ...

  5. OpenStack安装部署管理中常见问题解决方法

    一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...

  6. Django认证系统auth认证

    使用Django认证系统auth认证 auth认证系统可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现.对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证;会将用户信息写入到 ...

  7. django之auth认证系统

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  8. thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)

    thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)    Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...

  9. Laravel 5.2 中多用户认证实现(前台和后台登录)

    Laravel 5.2中多用户认证支持,即同时允许不同数据表用户(如前台用户.后台用户.app用户等)登录认证.下面我们就来简单介绍多用户登录及注册功能实现. 1.生成认证脚手架 首先我们使用Lara ...

随机推荐

  1. Redis学习二:Redis入门介绍

    一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内 ...

  2. Java并发编程原理与实战二:并行&并发&多线程的理解

    1.CPU的发展趋势: 核心数目依旧会越来越多,根据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的PC桌面在2018年可能回到24核心. 2.并发和并行的区别: 所有的并发处理都有排队等候, ...

  3. 【算法专题】后缀自动机SAM

    后缀自动机是用于识别子串的自动机. 学习推荐:陈立杰讲稿,本文记录重点部分和感性理解(论文语言比较严格). 刷题推荐:[后缀自动机初探],题目都来自BZOJ. [Right集合] 后缀自动机真正优于后 ...

  4. Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)

    题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...

  5. TCP/IP 网络编程的理解

    一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程 ...

  6. UNIX环境高级编程 第2章 UNIX标准及实现

    在过去的将近25年时间,人们为了UNIX的标准化做出了种种努力,这使得程序在不同版本的UNIX系统之间的移植相当容易. ISO C 1989年,C语言首个标准得到批准,其为C89.次年,一个带有小改动 ...

  7. PHP验证注册信息

    注册页面reg.html <form action="reg.php" method="post"> 用户名<input type=" ...

  8. 【黑客免杀攻防】读书笔记14 - 面向对象逆向-虚函数、MFC逆向

    虚函数存在是为了克服类型域解决方案的缺陷,以使程序员可以在基类里声明一些能够在各个派生类里重新定义的函数. 1 识别简单的虚函数 代码示例: #include "stdafx.h" ...

  9. nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查报403错误【转】

    在nginx.conf配置文件中 在server添加 location /nstatus { check_status; access_log off; #allow 192.168.2.11; #d ...

  10. Team Foundation Server 2010服务器安装

    本安装指南使用Windows Server 2008企业版为基础,安装Windows Server 2008 SP2(必须),在此操作系统环境上进行TFS2010的安装与配置. 三.系统用户设置 1. ...