IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> tp6权限控制类 -> 正文阅读

[开发测试]tp6权限控制类

在这里插入图片描述
在这里插入图片描述

class Base extends BaseController{
	// 重写初始化方法
	protected function initialize(){
		// 1、禁止未登录的用户进入系统
		$admin = Session::get('admin');
		if(!$admin){
			if(Request::isAjax()){
				exit(json_encode(array('code'=>1,'msg'=>'您还未登录,请先登录')));
			}
			exit('<div style="text-align:center;color:#333;font-size:18px;">您还未登录,请先登录</div><script>setTimeout(function(){window.location.href="/admins/account/login"},2000);</script>');
		}
		// 取出cookie中的randstr
		$randstr = Cookie::get('randstr');
		$cache_randstr = Cache::get('uid_'.$admin['id']);
		if($randstr!=$cache_randstr){
			Session::delete('admin');
			if(Request::isAjax()){
				exit(json_encode(array('code'=>1,'msg'=>'您的帐号在其他地方登录,请重新登录')));
			}
			exit('<div style="text-align:center;color:#333;font-size:18px;">您的帐号在其他地方登录,请重新登录</div><script>setTimeout(function(){window.location.href="/admins/account/login"},2000);</script>');
		}

		// 2、禁止未经授权的用户使用系统
		$controller = Request::controller();
		$action = Request::action();
		// 当前访问的菜单
		$curMenu = Db::table('admin_menu')->where('controller',$controller)->where('action',$action)->find();
		if(!$curMenu){
			$this->_noaccess('该功能不存在');
		}
		if($curMenu['status']==1){
			$this->_noaccess('该功能已被禁用,请联系管理员');
		}
		// 你有权使用这个正常的菜单吗?
		// 查出我的角色>where('id',$admin['gid'])  admin_group.id  =admin.gid
		$mygroup = Db::table('admin_group')->where('id',$admin['gid'])->find();
		if(!$mygroup){
			$this->_noaccess('该角色不存在,请联系管理员');
		}
		//获取当前的rifhts集合
		$mygroup['rights'] = json_decode($mygroup['rights'],true);
		echo '<pre>';
		print_r($mygroup['rights']);
		//当前访问的菜单是否在rights数组里
		if(!in_array($curMenu['mid'],$mygroup['rights'])){
			$this->_noaccess('没有权限,请联系管理员');
		}

		$this->admin = $admin;
		$this->mygroup = $mygroup;
	}
	private function _noaccess($msg){
		if(Request::isAjax()){
			exit(json_encode(array('code'=>1,'msg'=>$msg)));
		}else{
			exit('<div style="text-align:center;color:#333;font-size:18px;">'.$msg.'</div>');
		}
	}

在这里插入图片描述
注意mid 就是 right里的数据
admin_group 与admin进行关联 admin_group.id =admin.gid

$mygroup = Db::table('admin_group')->where('id',$admin['gid'])->find();

menu表与admin_group 进行关联 查看mid是否在rights数组里

if(!in_array($curMenu['mid'],$mygroup['rights'])){
			$this->_noaccess('没有权限,请联系管理员');
		}
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:01:13  更:2022-04-07 23:01:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 1:44:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码