thinphp中auth认证方法使用
一、获取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
- <?php
- class CommonAction extends Action{
- public function _initialize(){
- //类库位置应该位于ThinkPHP\Extend\Library\ORG\Util\
- import('ORG.Util.Auth');//加载类库
- $auth=new Auth();
- if(!$auth->check(GROUP_NAME . '/' . MODULE_NAME.'/'.ACTION_NAME,session('uid'))){
- $this->error('你没有权限');
- }
- }
- }
在Application/Common/Controller中新建CommonController.class.php
- <?php
- namespace Common\Controller;
- use Think\Controller;
- class CommonController extends Controller {
- public function _initialize () {
- $AUTH = new \Think\Auth();
- //类库位置应该位于ThinkPHP\Library\Think\
- if(!$AUTH->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, session('uid'))){
- $this->error('没有权限');
- }
- }
- }
八、新建后台首页
- <?php
- class IndexAction extends CommonAction {
- public function index () {
- echo '后台首页';
- }
- }
- <?php
- namespace Admin\Controller;
- use Common\Controller\CommonController;
- class IndexController extends CommonController {
- public function index () {
- echo '后台首页';
- }
- }
注意命名应和auth_rule表中的name完全对应。
使用心得:
一、使用Auth认证,只要表命名正确,甚至不必在config.php中定义任何一项即可使用。
二、如何进行自定义?
在项目的配置文件中定义:
- //Auth权限设置
- 'AUTH_CONFIG' => array(
- 'AUTH_ON' => true, // 认证开关
- 'AUTH_TYPE' => 1, // 认证方式,1为实时认证;2为登录认证。
- 'AUTH_GROUP' => 'auth_group', // 用户组数据表名
- 'AUTH_GROUP_ACCESS' => 'auth_group_access', // 用户-用户组关系表
- 'AUTH_RULE' => 'auth_rule', // 权限规则表
- 'AUTH_USER' => 'member', // 用户信息表
- ),
其中AUTH_TYPE设为2后,在SESSION中就会有类似数组
- [_AUTH_LIST_31] => Array
- (
- [0] => admin/index/index
- [1] => admin/base/index
- [2] => admin/rbac/role
- [3] => admin/rbac/member
- [4] => admin/rbac/node
- )
改变以上的'AUTH_GROUP','AUTH_GROUP_ACCESS','AUTH_RULE','AUTH_USER'配置项,即可自定义Auth认证所需四张表,但注意加上表前缀。
thinphp中auth认证方法使用的更多相关文章
- laravel中的Auth认证:
简介 Laravel 5.3 的 Auth 认证在 5.2 的基础上又有一些改变,本文说明如何在 Laravel 5.3 下做不同用户表的登录认证. Auth 认证原理简述 Laravel 的认证是使 ...
- 在AngularJS应用中实现认证授权
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAokAAAFwCAIAAABbwHY6AAAgAElEQVR4nOy9+XtcxbX3+/4H9z73jP ...
- Django用户认证系统(二)Web请求中的认证
在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...
- Bootstrap+Thinkphp3.2+Auth认证+jquery-validator后台
Auth权限认证 本例采用auth权限认证,用户和用户组采用多对多关系处理,自动添加rule规则,带有jquery-validator插件,自动控制菜单显示或隐藏. config.php中的配置 ...
- OpenStack安装部署管理中常见问题解决方法
一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...
- Django认证系统auth认证
使用Django认证系统auth认证 auth认证系统可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现.对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证;会将用户信息写入到 ...
- django之auth认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)
thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...
- Laravel 5.2 中多用户认证实现(前台和后台登录)
Laravel 5.2中多用户认证支持,即同时允许不同数据表用户(如前台用户.后台用户.app用户等)登录认证.下面我们就来简单介绍多用户登录及注册功能实现. 1.生成认证脚手架 首先我们使用Lara ...
随机推荐
- 【官方文档】Nginx负载均衡学习笔记(二)负载均衡基本概念介绍
简介 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应 ...
- js检测上传文件大小
前言: 项目中经常用到需要上传文件.照片等功能,同时需要限制所上传文件的大小.很多插件都会采用后台请求验证,前端Js校验比较少.本篇介绍一个前端JS便捷判断上传文件大小的方法. 代码很简单,关键就是怎 ...
- [转载]Getting Started with ASP.NET vNext and Visual Studio 14
说在转载之前的话:ASP.NET框架之前不断做大,而vNext则是从头开始,对ASP.NET框架进行拆分并瘦身,面对不同的需求而更加灵活,各个拆分出来的模块更加轻量.vNext的出现,对ASP.NET ...
- python核心编程笔记——Chapter2
对于.py文件,任何一个空的式子都不会有什么输出,如下: #!/usr/bin/env python #-*-coding=utf-8-*- #无任何效果,空语句 1 + 2 * 4 对于i++,++ ...
- 【BZOJ】3456: 城市规划 动态规划+多项式求逆
[题意]求n个点的带标号无向连通图个数 mod 1004535809.n<=130000. [算法]动态规划+多项式求逆 [题解]设$g_n$表示n个点的无向图个数,那么显然 $$g_n=2^{ ...
- 【leetcode 简单】 第七十三题 丑数
编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 × 3 示例 2: 输入: 8 输出: true ...
- 关于Java IO与NIO知识都在这里
由于内容比较多,我下面放的一部分是我更新在我的微信公众号上的链接,微信排版比较好看,更加利于阅读.每一篇文章下面我都把文章的主要内容给列出来了,便于大家学习与回顾. Java面试通关手册(Java学习 ...
- weblogica 启动managed server 不用每次输入密码
[weblogic@node2 AdminServer]$ pwd /home/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains ...
- 曹冲称象小游戏pygame实现
#!/usr/bin/env python # -*- coding: UTF-8 -*- import pygame from pygame.locals import * from sys imp ...
- qt使用动态库(DLL)
本文主要讲解在QT开发环境中如何使用VC生成的DLL及QT自身生成的DLL.至于其它情况本文不作讨论. 连接库分为2种 (1)动态连接库,通常有.h .lib .dll三个文件,功能实现在dll中 ( ...