ThinkPHP项目笔记之RBAC(权限)补充篇
这里,主要补充的是配置以及相关代码问题。
<?php
return array(
//'配置项'=>'配置值'
'RBAC_SUPERADMIN' => 'admin',//超级管理员名称,对应用户表中某一个用户:username
'ADMIN_AUTH_KEY' => 'superadmin',//超级管理员识别 'USER_AUTH_ON' => true, //是否需要认证
'USER_AUTH_TYPE' => 1, //认证类型 1-登陆后认证,2-实时认证
'USER_AUTH_KEY' => 'authId', //认证识别号,此处可以自定义
//'REQUIRE_AUTH_MODULE' => '', //需要认证模块
'NOT_AUTH_MODULE' => 'User,Index,Safe', //无需认证模块,和上面重复
'NOT_AUTH_ACTION' => 'addRoleHandle,addNodeHandle,addUserHandle,accessHandle',//无需认证操作
//'USER_AUTH_GATEWAY' => '', //认证网关,此处可以不用
//'RBAC_DB_DSN' => '', //数据库连接DSN
'RBAC_ROLE_TABLE' => 'tp_role', //角色表名称
'RBAC_USER_TABLE' => 'tp_role_user', //用户表名称
'RBAC_ACCESS_TABLE' => 'tp_access', //权限表名称
'RBAC_NODE_TABLE' => 'tp_node', //节点表名称
aaarticlea/png;base64,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" alt="" />这个一栏作为菜单,必定有其相应的代码:
//左边菜单
public function left(){
// var_dump(session('role-id')); $this -> assign("ouba",session('role-id'));
//超级管理员
if(session(C('ADMIN_AUTH_KEY'))){
$node = D('Tp_node') ->relation(true)-> where('level = 2') -> order('sort')-> select();
}else{
//取出所有权限节点
$node = D('Tp_node') ->relation(true)-> where('level = 2') -> order('sort')-> select();
//取出当前登录用户所有权限(英文名称)和操作权限
$module = '';
$node_id = '';
$accessList = $_SESSION['_ACCESS_LIST'];
foreach($accessList as $key => $value){
foreach($value as $key1 => $value1){
$module = $module.','.$key1;
foreach($value1 as $key2 => $value2){
// $node_id = $node_id.','.$key2;
$node_id = $node_id.','.$value2; }
}
} //去掉没有权限的节点
foreach($node as $key => $value){
if(!in_array(strtoupper($value['name']),explode(',',$module))){
unset($node[$key]);
}
else{
//模块存在,比较里面的操作
foreach($value['node'] as $key1 => $value1){
// if(!in_array(strtoupper($value1['name']),explode(',',$node_id))){
if(!in_array(strtoupper($value1['id']),explode(',',$node_id))){
unset($node[$key]['node'][$key1]); //一层一层下来,删除此操作
}
}
}
}
}
$this -> assign('node',$node);
$this->display();
}
注意几点:该函数方法主要对于权限的节点的处理,其中使用的“大D”,则在Model,中必有其对应的映射关系:
<?php
namespace Manage\Model;
use Think\Model\RelationModel;
class TpNodeModel extends RelationModel{
protected $_link = array(
'Tp_node'=>array(
'mapping_type'=> self::HAS_MANY,
'parent_key'=>'pid',
// 'class_name'=> 'Article',
'foreign_key'=> 'id',
'mapping_name' => 'node',
// 'mapping_order' => 'create_time desc', ),
);
} ?>
ThinkPHP项目笔记之RBAC(权限)补充篇的更多相关文章
- ThinkPHP项目笔记之RBAC(权限)基础篇
今天,总结一下,RBAC(基于角色的访问控制),直白一点,就是权限管理.说到这,不得不“小叙”一下,我第一次 开发权限管理功能的“插曲”.第一次做这个,真的不会,我只知道“有点印象”,当时任务落到我的 ...
- ThinkPHP项目笔记之RBAC(权限相关视频讲解篇
感谢互联网,只要你愿意找,没有找不到的免费资源 网址:http://www.studyfox.cn/143.html
- ThinkPHP项目笔记之RBAC(权限)中篇
现在,说说添加权限,权限管理列表 c.添加权限
- ThinkPHP项目笔记之RBAC(权限)上篇
当理清这5个表的关系,接下来,就是功能介绍了.
- ThinkPHP项目笔记之RBAC(权限)下篇
接着谈谈:添加用户以及用户管理列表 e.添加用户
- ThinkPHP项目笔记之MVC篇
题记:网上关于ThinkPHP的介绍,不计其数,有文档,示例,代码片段以及其他等.毕竟自己掌握的,才是自己的. 所以,趁着做的项目(当然用的是thinkphp框架)的余热,奋笔疾书,一个人的理解与拙笔 ...
- ThinkPHP项目笔记之模板篇
顾名思义:模板就是网页页面,有的是静态,有的的动态 基本语法: 1. <li><a href="{:U('User/searchlist')}">返回列表& ...
- ThinkPHP项目笔记之登录,注册,安全退出篇
1.先说注册 a.准备好注册页面,register.html,当然一般有,姓名,邮箱,地址等常用的. b."不要相信用户提交的一切数据",安全,安全是第一位的.所以要做判断,客户端 ...
- ThinkPHP项目笔记之函数篇
说到函数,可能有人会想:框架的C(控制器)通牌都是函数构成的,没有必要讲吧. 当然,我要说的是,公共函数:function.php,该文件就是为了开发一下功能准备的,比方说,某个功能,a地方可用,b地 ...
随机推荐
- ant design pro (三)路由和菜单
一.概述 参看地址:https://pro.ant.design/docs/router-and-nav-cn 二.原文摘要 路由和菜单是组织起一个应用的关键骨架,我们的脚手架提供了一些基本的工具及模 ...
- Some web Address
1.可视化算法(Data Structure Visualizations) https://www.cs.usfca.edu/~galles/visualization/Algorithms.htm ...
- HTTP 协议 Cache-Control 头——性能啊
原文地址:http://tools.ietf.org/html/rfc2616#section-14.9 本文内容 概述术语HTTP Cache-Control 头 可缓存的资源 可被高速 ...
- 转载【linux】Linux学习之CentOS6.x+7.x---网卡的配置
转载至:http://www.cnblogs.com/smyhvae/p/3932903.html [正文] Linux系统版本:Centos 6.5 Linux系统版本:Centos 7 目的:将c ...
- 深入理解Android的密度独立性
前言 安卓是一个只对硬件设备限制有很少限制的移动操作系统.生产商们几乎可以创造任何形状的.尺寸的和密度的屏幕的设备.设备可以有物理键盘和按钮或者只有虚 拟键盘和按钮.由于它的设备客制化的自由性给软件开 ...
- 执行 maven 命令 报错Unable to add module to the current project as it is not of packaging type 'pom'[转]
今天学习在本地搭建Maven工程时,执行了mvn archetype:generate 命令,报错. Unable to create project from archetype [org.apac ...
- 委托与事件代码详解与(Object sender,EventArgs e)详解
委托与事件代码详解 using System;using System.Collections.Generic;using System.Text; namespace @Delegate //自定义 ...
- python 中写hive 脚本
1.直接执行.sql脚本 import numpy as np import pandas as pd import lightgbm as lgb from pandas import DataFr ...
- Intel 5 6 7 8系列芯片组介绍
Intel 5 6 7 8系列芯片组介绍 Iknow.2015-11-05 22:40|知识编号:122257 操作步骤: [Inetl 5.6.7.8系列芯片组介绍] 芯片组是主板电路的核心.一定意 ...
- 编译器DIY——读文件
编译器的前端词法分析:将源文件解析成一个个的单词流.为语法分析做准备. 在词法分析阶段,我们要做的就是将词分出来,而且确定单词的类型,一般的程序设计语言的单词符号能够份为下面5种: 1.keyword ...