1 / 12
文档名称:

权限管理.ppt

格式:ppt   大小:832KB   页数:12页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

权限管理.ppt

上传人:wz_198613 2017/6/30 文件大小:832 KB

下载得到文件列表

权限管理.ppt

相关文档

文档介绍

文档介绍:权限管理 RBAC访问权限管理
讲师:马明
概述
RBAC 是指基于角色的访问控制,本掌主要描述了ThinkPHP 的 RBAC 设计思想和使用实例,给出了一个统一和方便的权限控制解决方案。
认证过程
1. 判断当前模块的当前操作是否需要认证
2. 如果需要认证并且尚未登录,跳到认证网关,如果已经登录执行5
3. 通过委托认证进行用户身份认证
4. 获取用户的决策访问列表
5. 判断当前用户是否具有访问权限
认证原理
RBAC::essList();//获取并保存用户访问权限列表
这个时候其实是获取当前登录用户对应的权限列表信息,系统会把用户的权限列表保存在SESSION里面,格式类似于
$_SESSION['AppName']['ModuleName']['ActionName']
如果存在这样一个数据,就表示用户具有 AppName 的 ModuleName 模块的 ActionName 操作的访问权限,否则就表示没有权限。如果有些模块并没有定义操作,那么就会读取 Public 模块的操作权限。
在应用系统的开发过程中,只需要设置相关的配置项和添加上面的认证方法,其他的认证和决策访问就由 RBAC 组件的 AccessDecision 方法自动完成了。你其实并不需要关心系统是如何判断用户是否具
有权限的,这个在传统的权限控制模式里面是需要手动来一一判断的。
配置文件
<?php
$config = require '../';
$array=array(
'USER_AUTH_ON'=>true,
'USER_AUTH_TYPE'=>1, // 默认认证类型 1 登录认证 2 实时认证
'USER_AUTH_KEY'=>'authId', // 用户认证SESSION标记
'ADMIN_AUTH_KEY’=>‘administrator', //管理员用户名
'USER_AUTH_MODEL'=>'User', // 默认验证数据表模型
'AUTH_PWD_ENCODER'=>'md5', // 用户认证密码加密方式
'USER_AUTH_GATEWAY'=>'/Public/login', // 默认认证网关
'NOT_AUTH_MODULE'=>'Public', // 默认无需认证模块
'REQUIRE_AUTH_MODULE'=>'', // 默认需要认证模块
'NOT_AUTH_ACTION'=>'', // 默认无需认证操作
'REQUIRE_AUTH_ACTION'=>'', // 默认需要认证操作
//'RBAC_ERROR_PAGE'=>true, //定义权限错误页面
'GUEST_AUTH_ON'=>false, // 是否开启游客授权访问
'GUEST_AUTH_ID'=>0, // 游客的用户ID
'RBAC_ROLE_TABLE'=>'think_role',
'RBAC_USER_TABLE'=>'think_role_user',
'ESS_TABLE'=>'ess',
'RBAC_NODE_TABLE'=>'think_node',
);
return array_merge($config,$array);
?>
数据库分析
表名称可以自定义,在配置文件可以自由配置
think_user表根据实际需求
,则可以直接应用已建过的think_user表的用户
,则另建think_admin表,表名也可以自定义
以下四张表有一些特定字段是必须设置的
think_node 节点表
think_role 角色分组表
ess 权限分配表
think_role_user 用户分组表
用户表是完全自定义的,但是要有一列自增长编号列
think_user 用户表
权限E-R图
节点表
表名:think_node
字段:
id 节点ID
name 项目名称、模块名称、操作名称
title 节点描述
status 节点状态
remark 详细描述
sort 节点排序
pid 父节点
level 节点分级
项目对应1,模块对应2,操作对应3
数据模拟:
(1,’Rbac’,’Rbac项目’,1,’项目名称’,0,0,1)
(2,’User’,’用户模块’,1,’模块名称’,0,1,2)
(3,’Goods’,’商品模块’,1,’模块名称’,0,1,2)
(4,’add’,’添加操作’,1,’用户添加操作’,0,2,3)
角色分组表
表名:think_role
字段:
id 角色分组ID
name 角色分组名称
pid