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

  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认证所需四张表,但注意加上表前缀。

时间: 2024-11-08 23:06:51

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

django的auth认证,is_authenticate 和装饰器的2个方法,注销的功能,

在django中创建表,会自动创建一些django自带的表,先了解用户认证, 认证登录  先要引用  , from django.contrib import auth 有很多方法, 网站先有登录和认证, authenticate(),提供用户认证,验证用户名和密码是否正确,一般需要username ,password两个关键字参数, 认证信息有效,返回有一个User对象.authrenticate()会在User对象上设置一个属性标识,认证了该用户, 创建一个Book表,然后生成数据库 fro

ios开发使用Basic Auth 认证方式

我们app的开发通常有2种认证方式   一种是Basic Auth,一种是OAuth:现在普遍还是使用OAuth的多,而使用Basic Auth认证的少,正好呢我今天给大家介绍的就是使用的比较少的Badic Auth认证方式,这种认证方式开发和调试简单, 没有复杂的页面跳转逻辑和交互过程,更利于发起方控制.然而缺点就是安全性更低,不过也没事,我们可以使用https安全加密协议,这样才更安全. 我使用的是AFNetworking发送的网络请求,因此我们用Basic Auth认证方式就不能再使用AF

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

在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authenticated()来区分,例如: if request.user.is_authenticated(): # Do something for authenticated users. else: # Do something for anonymous users. 登陆login login(

python中http请求方法有哪些

在python开发(http://www.maiziedu.com/course/python-px/)中,我们一般通过get.post方式发送http请求,可是最近在使用python做接口测试,发现python中http请求方法有许多种,作者整理了一番,把python中http请求方法都总结了出来,分享给大家,具体内容如下所示:一.python自带库----urllib2python自带库urllib2使用的比较多,简单使用如下:import urllib2response = urllib2

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

原文:Bootstrap+Thinkphp3.2+Auth认证+jquery-validator后台 Auth权限认证 本例采用auth权限认证,用户和用户组采用多对多关系处理,自动添加rule规则,带有jquery-validator插件,自动控制菜单显示或隐藏.   config.php中的配置 'AUTH_CONFIG'=>array( 'AUTH_ON' => true, //认证开关 'AUTH_TYPE' => 1, // 认证方式,1为时时认证:2为登录认证. 'AUTH_

在AngularJS应用中实现认证授权

在AngularJS应用中实现认证授权 在每一个严肃的应用中,认证和授权都是非常重要的一个部分.单页应用也不例外.应用并不会将所有的数据和功能都 暴露给所有的用户.用户需要通过认证和授权来查看应用的某个特定部分,或者在应用中进行特定的行为.为了在应用中对用户进行识别,我们需要让用户进行登录. 在用户管理方面,传统的服务器端应用和单页应用的实现方式有所不同,单页应用能够和服务器通信的方式只有AJAX.对于登录和退出来说也是如此. 负责识别用户的服务器端需要暴露出一个认证断电.单页应用将会把用户输入

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

thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮: 再比如我想按积分进行权限认证, 积分在0-100时能干什么, 在101-200时能干什么. 这些权限认证用RABC都很困难.

Django之中间件及Auth认证模块

CBV加装饰器 # 写一个装饰器验证session def login_auth(func): def inner(request,*args,**kwargs): if request.session.get('is_login'): return func(request,*args,**kwargs) else: return redirect('/login/') return inner # 写一个类作为网站主页,必须登陆才能访问 # 给里面的get,post方法加装饰器 class

Python Django 生命周期 中间键 csrf跨站请求伪造 auth认证模块 settings功能插拔式源码

一 django 生命周期 二 django中间键 1.什么是中间键 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. 简单来说就相当于django门户,保安:它本质上就是一个自定义类,类中定义了几个方法. 请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models): 响应走的时候也需要经过中间件才能到达w