二级伤残
T T h h i i n n k k P P H H P F F r r a a m m e e w w o o r r k 1 1.
.5 R R B B A
A C T T h h i i n n k k P P H H P 1 1. .5
5 基 基于 R R B B A A C C 的 的权 权限 限访 访问 问控 控制 制设
设计 编写:ThinkPHP 文档组
最后更新:20081216
目 目录
smashbox
录 1
1 概述.......................................................................................................................................3 2
2 安全体系................................................................................................................................
3 3
3 认证过程................................................................................................................................
4 4
4 认证设置................................................................................................................................
5 5
5 委托认证................................................................................................................................7 6
6 访问决策................................................................................................................................
7 7
2022年拜年祝福语7 权限分配................................................................................................................................8 8 8 实例解析 (10)
1 概述
RBAC 是指基于角的访问控制,本篇主要描述了ThinkPHP 的 RBAC 设计思想和使用实例,给出了一 个统一和方便的权限控制解决方案。
2 安全体系
要了解权限访问控制, 我们必须了解下什么是安全体系。 企业级的应用是离不开安全保护的, ThinkPHP 以基于 Spring 的 Acegi 安全系统作为参考原型,并做了简化,以适合目前的 ThinkPHP 结构,提供了 一个多层的、可定制的安全体系来为应用开发提供安全控制。安全体系中主要有:
² 安全
² 认证管理器
² 决策访问管理器
² 运行身份管理器
简单乐观心态的文案安全
安全就好比一道道门,在系统的安全防护系统中可能存在很多不同的安全控制环节,一旦某个 环节你未通过安全体系认证,那么安全就会实施拦截。
认证管理器
防护体系的第一道门就是认证管理器,认证管理器负责决定你是谁,一般它通过验证你的主体(通常 是一个用户名)和你的凭证(通常是一个密码),或者更多的资料来做到。更简单的说,认证管理器验 证你的身份是否在安全防护体系授权范围之内。
访问决策管理
虽然通过了认证管理器的身份验证,但是并不代表你可以在系统里面肆意妄为,因为你还需要通过访 问决策管理这道门。访问决策管理器对用户进行授权,通过考虑你的身份认证信息和与受保护资源关 联的安全属性决定是是否可以进入系统的某个模块,和进行某项操作。
例如,安全规则规定只有主管才允许访问某个模块,而你并没有被授予主管权限,那么安全会 拦截你的访问操作。
决策访问管理器不能单独运行,必须首先依赖认证管理器进行身份确认,因此,在加载访问决策过滤 器的时候已经包含了认证管理器和决策访问管理器。
为了满足应用的不同需要,ThinkPHP 在进行访问决策管理的时候采用两种模式:登录模式和即时模 式。
登录模式,系统在用户登录的时候读取改用户所具备的授权信息到 Session,下次不再重新获取授权信 息。也就是说即使管理员对该用户进行了权限修改,用户也必须在下次登录后才能生效。
即时模式就是为了解决上面的问题,在每次访问系统的模块或者操作时候,进行即使验证该用户是否 具有该模块和操作的授权,从更高程度上保障了系统的安全。
运行身份管理器
运行身份管理器的用处在大多数应用系统中是有限的, 例如某个操作和模块需要多个身份的安全需求, 运行身份管理器可以用另一个身份替换你目前的身份,从而允许你访问应用系统内部更深处的受保护 对象。这一层安全体系目前的 RBAC 中尚未实现。
3 认证过程
对应上面的安全体系,ThinkPHP 的 RBAC 认证的过程大致如下:
1.判断当前模块的当前操作是否需要认证
2.如果需要认证并且尚未登录,跳到认证网关,如果已经登录 执行5
3.通过委托认证进行用户身份认证
4.获取用户的决策访问列表
5.判断当前用户是否具有访问权限
4 认证设置
我们要进行安全拦截,就必须要启用用户认证,要启用 RBAC 请在项目配置文件中设置
USER_AUTH_ON 为True
并设置认证类型 USER_AUTH_TYPE
1 普通认证(认证一次 通常是在登录后认证)
2 高级认证(实时认证)
不设置默认为 1
例如,下面的设置可供参考
return array(
'USER_AUTH_ON'=>true,
'USER_AUTH_TYPE' => 1,
'USER_AUTH_KEY' => 'authId',
'USER_AUTH_PROVIDER' => 'DaoAuthentictionProvider',
'USER_AUTH_GATEWAY' => '/Public/login',
'NOT_AUTH_MODULE' => 'Public',
梦见亲人死而复生'REQUIRE_AUTH_MODULE'=> '',
);
医药卫生基础知识
认证识别号USER_AUTH_KEY 是用于检查用户是否经过身份认证的标识,一旦用户经过系统认证,系 统会把该用户编号保存在$_SESSION[C('USER_AUTH_KEY')]中
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论