权限验证

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-权限管理-权限验证的更多相关文章

  1. PHP.46-TP框架商城应用实例-后台21-权限管理-权限和角色的关系

    权限和角色的关系 权限功能 角色功能 权限与角色的关联要通过权限-角色表进行{多对多} /********* 角色-权限表 *********/ drop if exists p39_role_pri ...

  2. PHP.44-TP框架商城应用实例-后台19-权限管理-RBAC需求分析

    RBAC:Role Based Access Control:基于角色的访问控制 需求分析:[类似效果如下图] 1.权限,角色,管理员 2.权限管理[无限级] 注意:权限会被分配给角色,而不是给管理员 ...

  3. PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  4. PHP.47-TP框架商城应用实例-后台22-权限管理-角色和管理员的关系

    角色和管理员的关系 角色功能 管理员功能 角色与管理的关联要通过管理-角色表进行{多对多} /********* 管理-角色表 *********/ drop if exists p39_admin_ ...

  5. PHP.45-TP框架商城应用实例-后台20-权限管理-RBAC表构造与代码生成

    权限管理 三张主表{p39_privilege(权限).p39_role(角色).p39_admin(管理)} 两张中间表{p39_role_pri(角色-权限).p39_admin_role(管理- ...

  6. PHP.37-TP框架商城应用实例-后台13-商品管理-扩展分类的添加、显示【数据分组】、搜索分类【多对多】

    商品扩展分类 需求:一件商品能有多个扩展分类,搜索任何一个分类都能搜出该商品 建表[扩展分类表] drop table if exists p39_goods_cat; create table p3 ...

  7. PHP.36-TP框架商城应用实例-后台12-商品管理-主分类添加、修改、搜索(连表查询)

    需求:一个商品必须有一个主分类,一个主分类可以有多个商品 [一对多] 修改表p39_goods,增加外键约束,增加索引 主分类添加[控制器->页面] 1.在控制器GoodsController. ...

  8. PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

    添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...

  9. PHP.28-TP框架商城应用实例-后台5-多表操作-商品表与品牌表

    表与表之间的关系:1:1 1:多 多:多 功能需求决定表关系 此处的表关系为:品牌表:商品表=1:多 1.首先在表结构上关联,在多的表(商品表)添加一个字段,关联一的表(品牌表)的ID(主键) 添加字 ...

随机推荐

  1. jquery 判断元素可见性

    $(".more_list").is(":visible") $(".more_list").is(":hidden")

  2. Codeforces Round #423 (Div. 2)

    codeforces 423 A. Restaurant Tables [水题] //注意,一个人选座位的顺序,先去单人桌,没有则去空的双人桌,再没有则去有一个人坐着的双人桌.读清题意. #inclu ...

  3. 完整详解GCD系列(三)dispatch_group

    http://blog.csdn.net/hello_hwc/article/details/41409135 一.dispatch_group把一组任务提交到队列中,这些队列可以不相关,然后坚挺这组 ...

  4. CentOS 安装 dokuwiki

    前期准备:yum 安装httpd和mysql 1.下载dokuwiki安装包 http://download.dokuwiki.org/: 2.centos系统中httpd的根目录为:/var/www ...

  5. Dos小技巧-在Dos中直接打开软件

    在這裡我們舉一個例子 在D盤的D:\Program Files (x86)\Youdao\Dict4下面是關於有道字典的基本信息如圖(1.1.1).當點擊uninst.exe的時候顯示如圖:(1.1. ...

  6. js算法排序

    一.选择算法排序(算法时间复杂度为O(n²)级别) 选择排序就是选择数组中的最小的树,依次排序.第一次选择最小的数放在第一位,第二次从剩余的元素中寻找最小的元素放在第二位,第三次在剩余的数中选择最小的 ...

  7. MacType 文字之美 – 让 Windows 字体更漂亮

    苹果的Mac系统总能让人眼前一亮,除了其精美的软件界面设计外,最重要是其文字显示效果(渲染方式)比 Windows 更加清晰锐利,阅读起来更加舒服.于是就有高手开发了一款叫 GDI++ 的字体渲染引擎 ...

  8. 全渠道价值链整合云服务 B2B SOLOMO(组图)

    最近看到>中谈到“全渠道零售”(Omni-channel Retailing),指在互联网和电子商务的当今时代“零售商将能通过各种渠道与顾客互动,包括网站.实体店.服务终端.直邮和目录.呼叫中心 ...

  9. python 基于udp 连接

    #udp 服务端 #导入socket模块 from socket import * #ip加端口 类型为元组 ip_port=('127.0.0.1',8002) #最大接收字节 buffer_siz ...

  10. 04 关于oracle的锁的级别以及介绍

    关于oracle的锁的级别以及介绍 oracle造成锁表的情况: 一.查看锁的对象视图:select object_id,session_id,locked_mode from v$locked_ob ...