thinkphp-权限控制
1.在 Admin 模块下创建一个 IndexController.class.php(默认就有了)
<?php
namespace Home2\Controller;
use Common\Controller\AuthController;
class IndexController extends AuthController {
public function index(){
echo "后台首页(home2)";
}
}
?>
2.在baidu根目录下的 Common 公共模块下创建 Controller 文件夹,并在里面创建一个 AuthController.class.php 类,这个类用于权限控制。
<?php
namespace Common\Controller;
use Think\Controller;
use Think\Auth;
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();
//'Home2/Index/index' //放权的id
if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,$sess_auth['uid'])) {
$this->error('没有权限',U('Login/index'));
}
}
}
?>
3.后台Home2里创建一个 LoginController.class.php,模版为 index.html。
(模块) LoginController.class.php (模板)index.html
<?php <body>
namespace Home2\Controller; <form method="post" action="{:U('Login/index')}">
use Think\Controller; <p>用户名:<input type="text" name="user"></p>
class LoginController extends Controller{ <p><input type="submit" name="登录"></p>
public function index(){ </form>
if(IS_POST){ </body>
$login=array();
switch(I('user',null,false)){
case 'admin':
$login['uid']=1;
$login['user']='admin';
break;
case 'test':
$login['uid']=2;
$login['user']='test';
break;
case 'guest':
$login['uid']=3;
$login['user']='guest';
break;
default:
$this->error('不存在此用户');
}
if(count($login)){
session('auth',$login);
$this->success('登录成功',U('Index/index'));
}
}
else{
$this->display();
}
}
}
?>
4.数据库中的表
可以在ThinkPHP/Library/Think/下的
Auth.class.php中查看权限用法与表创建
DROP TABLE IF EXISTS `think_auth_rule`;
CREATE TABLE `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;
-- ----------------------------
-- think_auth_group 用户组表,
-- id:主键, title:用户组中文名称, rules:用户组拥有的规则id, 多个规则","隔开,status 状态:为1正常,为0禁用
-- ----------------------------
DROP TABLE IF EXISTS `think_auth_group`;
CREATE TABLE `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;
-- ----------------------------
-- think_auth_group_access 用户组明细表
-- uid:用户id,group_id:用户组id
-- ----------------------------
DROP TABLE IF EXISTS `think_auth_group_access`;
CREATE TABLE `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 表名
id title status rules
用户id 用户名 状态(没什么) 权限id
1 默认管理组 1 1,2,3,4,5
think_auth_group_access 表名 //把权限1分配给用户3
uid group_id
用户id 权限id
3 1
think_auth_rule id name title type status condition
表名 权限id 权限地址 权限名 1 1 1
转载于:https://www.cnblogs.com/yjh1604600160/p/think20.html
thinkphp-权限控制相关推荐
- ThinkPHP的RBAC(基于角色权限控制)详解
ThinkPHP的RBAC(基于角色权限控制)详解 一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到 ...
- ThinkPHP的RBAC权限控制
ThinkPHP的RBAC(基于角色权限控制)详解 https://blog.csdn.net/renxing518/article/details/78192311 https://edu.51ct ...
- tp3.2.3权限控制一之详解及demo
一.首先需明确TP3.2.3的权限控制是怎么实现的 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色, ...
- mysql用户控制登录_MySql用户权限控制_MySQL
bitsCN.com MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号: www.bitsCN.com [sql] CREATE USER use ...
- 前、后端分离权限控制设计和实现思路
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/9QUT 简述 近几年随着react.angu ...
- cvs linux权限,Linux下CVS+ACL的权限控制是什么? 爱问知识人
考试大Linux站整理:我的CVS服务器端是在linux下,我安装了cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz,利用CVS+ACL来做权限控制.但是现在遇到几个问题 ...
- Java访问权限控制
面向对象的核心思想之一就是封装,只把有限的方法和成员公开给别人,这也是迪米特法则的内在要求,是外部调用方对方法体内的实现细节知道得尽可能少. 如何实现封装呢? 需要使用某些关键字来限制外部对类内属性和 ...
- 基于RESTful API 怎么设计用户权限控制?
作者:JC_Huang http://www.jianshu.com/p/db65cf48c111 1 前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的 ...
- 8.Spring Security 权限控制
Spring Security权限控制可以配合授权注解使用,具体有哪些注解可以参考Spring-Security保护方法.接着上一节,要开启这些注解,只需要在Spring Security配置文件中添 ...
- 2.Spring Security 用户注销 与 Thymeleaf 权限控制
Spring Security 用户注销 与 Thymeleaf 权限控制 Spring Security 用户注销 1.上一篇<Spring Security 详细简绍与入门>中内存用户 ...
最新文章
- 结构体名和结构体名是个指针的区别
- MYSQL max_user_connections back_log max_connections参数和Max_used_connections
- Spring --- SpEL
- js控制页面元素的隐藏与显示
- textfile 属性
- eclipse build path 以及 clean(转)
- Linux之Nginx配置解析PHP
- 番茄花园win11 32位官方纯净版镜像v2021.07
- 中国电信:张志勇辞任公司执行副总裁
- java面试题库精选
- 计算机类专业试题及答案,计算机专业考试试题集及答案.doc
- php操作阿里云短信API接口
- ListView适配器
- 全国高校计算机能力挑战赛真题(一)
- 短视频云控系统的前世今生
- Dropping Pixels for Adversarial Robustness
- Matlab 中 residuez函数的使用
- 【推荐系统】User-Item CF:GC-MC
- ISO 14229、ISO 15765、ISO 11898的区别
- 【吃瓜教程】周志华机器学习西瓜书第三章答案
热门文章
- springMVC实现文件下载(附带Servlet方式)
- ifix如何设画面大小_ifix5.1环境下的ifix服务器、客户端配置
- 百度地图 js 在安卓端手指缩放无效_利用百度地图绘制3D轨迹演示
- python后端需要什么基础_python做后端好吗
- 蓝桥杯 历届试题 合根植物(并查集)
- java 具有绘图能力的类,《Java程序设计》复习题_绘图
- python访问服务器注册表,如何在Python中使用写入权限打开Windows注册表
- 嵌入式 linux 程序不能运行,嵌入式Linux中在开发板上/usr/bin目录下不能运行自己交叉编译的程序...
- ajax连mysql数据库_AJAX调用mysql数据库简单例子
- python3解析json数据_Python3高级教程