PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证
权限验证
1、登录控制器
2、通过tp验证码类生成验证码图片

3、在管理员模型增加登录验证规则

4、后台中所有的控制器必须先登录才能访问
思路:在访问任何一个控制器之前都判断一个session即可,=>增加一个父控制器验证Session

让所有后台的控制器【除了Login控制器之外的】都继承自这个控制器
5、在管理员访问后台的任何一个页面之前先到数据库中查看当前管理员所在的角色是否有权限访问这个页面
在权限模型中增加此检查方法,在父类登录控制器中调用


6、后台左侧只显示当前管理员有权限访问的按钮
思路:取出当前管理员所拥有的前两级的权限,在左侧循环这些权限做为按钮!
在权限模型中增加获取当前管理员权限的方法
/******** 获取当前管理员所拥有的前两级的权限 ***********/
public function getBtns()
{
// 先取出当前管理员所拥有的所有的权限
$adminId = session('id');
if($adminId == 1)
{
$priModel = M('privilege');
$priData = $priModel->select();
}
else
{
// 取出当前管理员所在角色所拥有的权限
$arModel = M('admin_role');
$priData = $arModel->alias('a')
->field('DISTINCT c.id, c.pri_name,c.module_name,c.controller_name,c.action_name,c.parent_id')
->join ('LEFT JOIN __ROLE_PRI__ b ON a.role_id=b.role_id
LEFT JOIN __PRIVILEGE__ c ON b.pri_id=c.id')
->where(array(
'a.admin_id' => array('eq', $adminId),
))->select();
}
/*************** 从所有的中选出前两级 *******************/
$btns = array(); //前两级权限
foreach ($priData as $k => $v)
{
if($v['parent_id'] == 0)
{
//再找这个顶的子级
foreach ($priData as $k1 => $v1)
{
if($v1['parent_id'] == $v['id'])
{
$v['children'][] = $v1;
}
}
$btns[] = $v;
}
}
return $btns;
}
在menu.html中使用四维函数输出

7、在管理员模型增加一个退出账号功能 => 删除session

PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证的更多相关文章
- PHP.46-TP框架商城应用实例-后台21-权限管理-权限和角色的关系
权限和角色的关系 权限功能 角色功能 权限与角色的关联要通过权限-角色表进行{多对多} /********* 角色-权限表 *********/ drop if exists p39_role_pri ...
- PHP.44-TP框架商城应用实例-后台19-权限管理-RBAC需求分析
RBAC:Role Based Access Control:基于角色的访问控制 需求分析:[类似效果如下图] 1.权限,角色,管理员 2.权限管理[无限级] 注意:权限会被分配给角色,而不是给管理员 ...
- PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改
商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...
- PHP.47-TP框架商城应用实例-后台22-权限管理-角色和管理员的关系
角色和管理员的关系 角色功能 管理员功能 角色与管理的关联要通过管理-角色表进行{多对多} /********* 管理-角色表 *********/ drop if exists p39_admin_ ...
- PHP.45-TP框架商城应用实例-后台20-权限管理-RBAC表构造与代码生成
权限管理 三张主表{p39_privilege(权限).p39_role(角色).p39_admin(管理)} 两张中间表{p39_role_pri(角色-权限).p39_admin_role(管理- ...
- PHP.37-TP框架商城应用实例-后台13-商品管理-扩展分类的添加、显示【数据分组】、搜索分类【多对多】
商品扩展分类 需求:一件商品能有多个扩展分类,搜索任何一个分类都能搜出该商品 建表[扩展分类表] drop table if exists p39_goods_cat; create table p3 ...
- PHP.36-TP框架商城应用实例-后台12-商品管理-主分类添加、修改、搜索(连表查询)
需求:一个商品必须有一个主分类,一个主分类可以有多个商品 [一对多] 修改表p39_goods,增加外键约束,增加索引 主分类添加[控制器->页面] 1.在控制器GoodsController. ...
- PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图
添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...
- PHP.28-TP框架商城应用实例-后台5-多表操作-商品表与品牌表
表与表之间的关系:1:1 1:多 多:多 功能需求决定表关系 此处的表关系为:品牌表:商品表=1:多 1.首先在表结构上关联,在多的表(商品表)添加一个字段,关联一的表(品牌表)的ID(主键) 添加字 ...
随机推荐
- MATLAB基础指令操作
由于课程实验需要学习使用了MATLAB,在此记录一下MATLAB的基本操作和命令,供参考与查阅. 学习过程中的资料也链接如下: MATLAB矩阵运算:https://wenku.baidu.com/v ...
- Url快捷方式转超链接页
效果:(打了码 可以感受到效果) 问题: 近期发现了之前的一些网页快捷方式文件有50个 查看起来实在不方便 解决: 目前想到了两种 (书签法) (类书签法) 第一种简单快速 (当然有掌握写技巧) ...
- ThreadPoolExecutor异常处理
java.util.concurrent包中的ThreadPoolExecutor,提供了java语言的线程池,你可以提交一个返回结果的任务(submit(Callable),返回Future),或者 ...
- 以ADO形式操作mysql数据库
首先得需要一个连接mysql的helper类: public class MySqlHelper { #region [ Connection ] public static string conne ...
- 【洛谷P2022】有趣的数
有趣的数 题目链接 首先求出1~k中有多少个在k前面的数的个数,若>m,则无解 比如12345,从第一位开始, 1 0~1 共2个 1-0+1 12 10~12共3个 12-10+1 1 ...
- 关于$NOIP2017$的题目讲解
关于\(NOIP2017\)的题目讲解 1.小凯的疑惑 题目描述: 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法 ...
- 如何用javasript对Gridview的项目进行汇总统计?
当我们在gridview显示统计信息时,都会想在gridview最后一行显示[小计]结果,但gridview的话好像比较难搞(至少我也不会呀 囧~),那么我就结合jquery写了一个解决方案,下面举个 ...
- Java 分支结构
Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java 有两种分支结构: if 语句 switch 语句 if 语句 一个 i ...
- Before start of result set
ResultSet:在处理结果集的时候出现了问题. 解决办法:while(rs.next())
- 开发机器上利用vs2013调试远程IIS上的c#程序
当远程IIS上的C#程序出现问题,怎么排错,一般我们通过看日志排查错误的方法,这种方法在程序异常日志都打印出来的情况下是可以解决的,但如果程序日志不详细,或者从日志看不出有用的内容的时候怎么排错? 本 ...