权限介绍 

ThinkPHP 提供了一个内置的 Auth.class.php 类来实现权限控 制,这个类提供了三个表:

think_auth_rule(认证规则表)、think_auth_group(用户组 表)、think_auth_group_access(用户和组对应关系表)。

Auth.class.php中有提供三个表结构,

当然还要结合自己创建的用户 表进行对应即可。

二、简单登录

首先进入后台首页 IndexControll.class.php


正常输出

然后

公共目录Common创建Controller文件夹  建立AuthController.class.php

namespace Common\Controller;use Think\Controller;use Think\Auth;
class AuthController extends Controller {
protected function _initialize() {$auth = new Auth();if(!$auth->check()) {$this->error('没有权限'); }}
} 

IndexController.class.php:

namespace Admin\Controller;
use Common\Controller\AuthController;//继承公共目录的控制类
class IndexController extends AuthController { public function index() { echo '后台首页!'; } } 

再访问后台首页的时候,已经没有权限了。

admin/Controller目录创建

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['u_id'] = 1;  $login['user'] = 'admin';  break;  case 'vip':  $login['u_id'] = 2;  $login['user'] = 'vip';  break;  case 'guest':  $login['u_id'] = 3;  $login['user'] = 'guest';  break;  default :  $this->error('您输入的用户不存在!');  }  }if (count($login)) {  session('auth', $login);  $this->success('登陆成功', U('Index/index'));  } else {  $this->display();  }  }  public function logout() {  session('[destroy]');  $this->success('退出成功', U('Login/index'));  }  }  

view/Login  index.html

<!DOCTYPE html>
<html>  <head>  <title>后台页面</title>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  </head>  <body>  <form method="post" action="{:U('Login/index')}">  <p><font color='red'>admin用户为管理员,可以进入后台页面</font></p>  <p><font color='purple'>vip用户为会员,可以进入后台页面</font></p>  <p><font color='blue'>guest用户游客,不可以进入后台页面</font></p>  <p>用户:<input type="text" name="user"/></p>  <p><input type="submit" value="提交"/></p>  </form>  </body>
</html>  

完善 AuthController 类的权限验证过程。

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/logout'));

}

}

}

之前要导入数据

表的结构 `think_auth_group`
--

CREATE TABLE IF NOT EXISTS `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 AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `think_auth_group`
--

INSERT INTO `think_auth_group` (`id`, `title`, `status`, `rules`) VALUES
(1, '默认管理组', 1, '1,2,3');

-- --------------------------------------------------------

--
-- 表的结构 `think_auth_group_access`
--

CREATE TABLE IF NOT EXISTS `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;

--
-- 转存表中的数据 `think_auth_group_access`
--

INSERT INTO `think_auth_group_access` (`uid`, `group_id`) VALUES
(2, 1);

-- --------------------------------------------------------

--
-- 表的结构 `think_auth_rule`
--

CREATE TABLE IF NOT EXISTS `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 AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `think_auth_rule`
--

INSERT INTO `think_auth_rule` (`id`, `name`, `title`, `type`, `status`, `condition`) VALUES
(1, 'Admin/Index/index', '后台首页', 1, 1, '');

--

Thinkphp--Auth权限控制相关推荐

  1. Zend Framework——权限控制与认证

    Zend Framework Acl与Auth--权限控制与认证 Created with Raphaël 2.1.2 认证开始 登录 发送用户名,密码及数据库连接 校验工作 结果处理 认证结束 步骤 ...

  2. ThinkPHP的RBAC(基于角色权限控制)详解

    ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...

  3. ThinkPHP的RBAC权限控制

    ThinkPHP的RBAC(基于角色权限控制)详解 https://blog.csdn.net/renxing518/article/details/78192311 https://edu.51ct ...

  4. php auth和rbac区别,THINKPHP中的AUTH权限管理介绍

    AUTH权限管理的原理 最简单的auth权限管理的4张数据表如下图 每一个功能对应的一个url路径,规则表其实就是记录url路径,通过url来实现权限管理 权限验证时机分类 前置验证 所谓前置认证,就 ...

  5. tp3.2.3权限控制一之详解及demo

    一.首先需明确TP3.2.3的权限控制是怎么实现的 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色, ...

  6. tp5 Auth权限认证方法与步骤

    一.概述 RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮: 再比如我想按积分进行权限认证 ...

  7. 8.Spring Security 权限控制

    Spring Security权限控制可以配合授权注解使用,具体有哪些注解可以参考Spring-Security保护方法.接着上一节,要开启这些注解,只需要在Spring Security配置文件中添 ...

  8. 2.Spring Security 用户注销 与 Thymeleaf 权限控制

    Spring Security 用户注销 与 Thymeleaf 权限控制 Spring Security 用户注销 1.上一篇<Spring Security 详细简绍与入门>中内存用户 ...

  9. 通用数据级别权限的框架设计与实现(4)-单条记录的权限控制

    查看上篇文章通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤,我们开始在原来的基础上实现单条权记录的权限控制. 相信前面的列表权限控制,很多系统都可以做到,但如何在上面列表的权限过滤中实现通 ...

  10. Keycloak简单几步实现对Spring Boot应用的权限控制

    我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...

最新文章

  1. Net作业调度(一) -Quartz.Net入门
  2. 成功解决pandas\core\generic.py:3660: SettingWithCopyWarning:  A value is trying to be set on a copy of a
  3. 撒花!算法岗必须复现的上百篇经典论文代码完结啦! | 附下载链接
  4. 错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据
  5. 11选5下期算法_11选5为什么你不中奖
  6. GIS实战应用案例100篇(十五)-CASS插件应用:如何控制点属性与点名统一
  7. android 滚动尺画到控件中间,android 刻度尺控件实现
  8. system.argumentnullexception值不能为null_MySQL NULL 值如何处理?
  9. GitHub又有了新功能:控诉互联网公司996行为。这个网站被发在GitHub一个小时之后,标星就超过了1000
  10. c json保存整型数组_命令行JSON解析神器jq
  11. 计算机图形学笔记(第二周)
  12. pytorch tensor 梯度
  13. 揭露动画(Reveal Effect)实现时的注意事项(附上bug-logcat)...
  14. vue单元测试vue test utils使用初探
  15. html如何将图片做成背景图片,css如何设置网页背景图片?
  16. 阿里云Oss获取图片的大小信息
  17. GIS软件——ArcGIS去除影像黑边
  18. 二项式展开 matlab,二项式造句_造句大全
  19. Java 获取主机ip地址(ipv4)
  20. kubernetes Pod Lifecycle生命周期与livenessProbe、 readinessProbe探测方法

热门文章

  1. 根据身份证获取姓名和性别
  2. 烤仔说 | Metahuman次世代“捏脸”怎么玩?
  3. android后台模拟单机,《仙梦奇缘》安卓手游 手工端 含GM后台 含文字架设教程
  4. C语言打印一个下三角矩阵
  5. 怎样在3Dslicer中创建LoadableModule
  6. 计算机网络交换机命令汇总,锐捷交换机常用配置命令汇总,收藏备用!
  7. 合肥工业大学计算机网络期中考试,合肥工业大学计算机网络2013年试卷及答案(终极版)...
  8. STM8 STM8S208MB 入门
  9. java如何给视频添加水印logo
  10. Reflect Java反射机制