Thinkphp--Auth权限控制
权限介绍
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权限控制相关推荐
- Zend Framework——权限控制与认证
Zend Framework Acl与Auth--权限控制与认证 Created with Raphaël 2.1.2 认证开始 登录 发送用户名,密码及数据库连接 校验工作 结果处理 认证结束 步骤 ...
- ThinkPHP的RBAC(基于角色权限控制)详解
ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...
- ThinkPHP的RBAC权限控制
ThinkPHP的RBAC(基于角色权限控制)详解 https://blog.csdn.net/renxing518/article/details/78192311 https://edu.51ct ...
- php auth和rbac区别,THINKPHP中的AUTH权限管理介绍
AUTH权限管理的原理 最简单的auth权限管理的4张数据表如下图 每一个功能对应的一个url路径,规则表其实就是记录url路径,通过url来实现权限管理 权限验证时机分类 前置验证 所谓前置认证,就 ...
- tp3.2.3权限控制一之详解及demo
一.首先需明确TP3.2.3的权限控制是怎么实现的 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色, ...
- tp5 Auth权限认证方法与步骤
一.概述 RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮: 再比如我想按积分进行权限认证 ...
- 8.Spring Security 权限控制
Spring Security权限控制可以配合授权注解使用,具体有哪些注解可以参考Spring-Security保护方法.接着上一节,要开启这些注解,只需要在Spring Security配置文件中添 ...
- 2.Spring Security 用户注销 与 Thymeleaf 权限控制
Spring Security 用户注销 与 Thymeleaf 权限控制 Spring Security 用户注销 1.上一篇<Spring Security 详细简绍与入门>中内存用户 ...
- 通用数据级别权限的框架设计与实现(4)-单条记录的权限控制
查看上篇文章通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤,我们开始在原来的基础上实现单条权记录的权限控制. 相信前面的列表权限控制,很多系统都可以做到,但如何在上面列表的权限过滤中实现通 ...
- Keycloak简单几步实现对Spring Boot应用的权限控制
我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...
最新文章
- Net作业调度(一) -Quartz.Net入门
- 成功解决pandas\core\generic.py:3660: SettingWithCopyWarning: A value is trying to be set on a copy of a
- 撒花!算法岗必须复现的上百篇经典论文代码完结啦! | 附下载链接
- 错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据
- 11选5下期算法_11选5为什么你不中奖
- GIS实战应用案例100篇(十五)-CASS插件应用:如何控制点属性与点名统一
- android 滚动尺画到控件中间,android 刻度尺控件实现
- system.argumentnullexception值不能为null_MySQL NULL 值如何处理?
- GitHub又有了新功能:控诉互联网公司996行为。这个网站被发在GitHub一个小时之后,标星就超过了1000
- c json保存整型数组_命令行JSON解析神器jq
- 计算机图形学笔记(第二周)
- pytorch tensor 梯度
- 揭露动画(Reveal Effect)实现时的注意事项(附上bug-logcat)...
- vue单元测试vue test utils使用初探
- html如何将图片做成背景图片,css如何设置网页背景图片?
- 阿里云Oss获取图片的大小信息
- GIS软件——ArcGIS去除影像黑边
- 二项式展开 matlab,二项式造句_造句大全
- Java 获取主机ip地址(ipv4)
- kubernetes Pod Lifecycle生命周期与livenessProbe、 readinessProbe探测方法
热门文章
- 根据身份证获取姓名和性别
- 烤仔说 | Metahuman次世代“捏脸”怎么玩?
- android后台模拟单机,《仙梦奇缘》安卓手游 手工端 含GM后台 含文字架设教程
- C语言打印一个下三角矩阵
- 怎样在3Dslicer中创建LoadableModule
- 计算机网络交换机命令汇总,锐捷交换机常用配置命令汇总,收藏备用!
- 合肥工业大学计算机网络期中考试,合肥工业大学计算机网络2013年试卷及答案(终极版)...
- STM8 STM8S208MB 入门
- java如何给视频添加水印logo
- Reflect Java反射机制