Yii2权限管理之ACF
来源:互联网 发布:贴吧发帖软件 编辑:程序博客网 时间:2024/06/04 19:40
概述
在Yii中, 共支持两种权限管理, 其一ACF, 其二RBAC. 在做用户平台前台应用时, AFC是比较常用, 易用的控制用户哪些页面可以直接访问, 哪些页面需要登录后访问的授权机制.
ACF, Access Control Filter, 是一个Yii中的过滤器. yii\filters\AccessControl类来实现.
使用
由于是过滤器, 因此需要在控制器类的方法behaviors()方法中定义. 以示例的SiteController为例:
以上配置中, 就配置了如下内容,
- only选项表示该过滤器针对于logout, signup起作用
- rules选项定义了动作的访问规则, 其中
- actions表示当前规则针对于哪些动作起作用,
- roles表示请求该动作的身份角色, 使用?问号表示未登录用户, @表示已登录用户
- allow表示是否允许, true允许, false不允许.
总结来说, 就是在当前控制器中, 未登录用户可以访问signup动作进行注册, 而登录用户才可以访问logout动作, 执行退出工作.
对于我们来说, 主要是配置only中针对的动作, 以及将动作分配到允许和禁止的规则中. only选项表示该过滤器针对于哪些动作起作用, 如果没有在only列表中的动作, 表示默认授权, 可以访问的动作. 因此想要控制, 一定要加入到only列表中.
将上面的代码复制到任何的控制器中, 都可以立即起作用的, 很容易的呢!
此时, 经过AccessControl过滤器的判断, 如果当前没有授权执行某些操作, 则会重定向到登录页面. 如果没有授权的用户是已登录(认证)用户, 则会抛出Forbidden异常. 同时允许自定义没有授权的处理行为, 通过为denyCallback提供回调函数可以完成.
AccessControl选项列表
完整的AccessControl属性列表, 请参见.
- yii\filters\AccessRule::allow: 指定该规则是 “允许” 还是 “拒绝” 。(译者注:true是允许,false是拒绝)
- yii\filters\AccessRule::actions:指定该规则用于匹配哪些操作。 它的值应该是操作方法的ID数组。匹配比较是大小写敏感的。如果该选项为空,或者不使用该选项, 意味着当前规则适用于所有的操作。
- yii\filters\AccessRule::controllers:指定该规则用于匹配哪些控制器。 它的值应为控制器ID数组。匹配比较是大小写敏感的。如果该选项为空,或者不使用该选项, 则意味着当前规则适用于所有的操作。(译者注:这个选项一般是在控制器的自定义父类中使用才有意义)
- yii\filters\AccessRule::roles:指定该规则用于匹配哪些用户角色。 系统自带两个特殊的角色,通过 yii\web\User::isGuest 来判断:
?
: 用于匹配访客用户 (未经认证)@
: 用于匹配已认证用户
- 使用其他角色名时,将触发调用 yii\web\User::can(),这时要求 RBAC 的支持 (在下一节中阐述)。 如果该选项为空或者不使用该选项,意味着该规则适用于所有角色。
- yii\filters\AccessRule::ips:指定该规则用于匹配哪些 yii\web\Request::userIP 。 IP 地址可在其末尾包含通配符
*
以匹配一批前缀相同的IP地址。 例如,192.168.*
匹配所有192.168.
段的IP地址。 如果该选项为空或者不使用该选项,意味着该规则适用于所有角色。 - yii\filters\AccessRule::verbs:指定该规则用于匹配哪种请求方法(例如
GET
,POST
)。 这里的匹配大小写不敏感。 - yii\filters\AccessRule::matchCallback:指定一个PHP回调函数用于 判定该规则是否满足条件。(译者注:此处的回调函数是匿名函数)
- yii\filters\AccessRule::denyCallback: 指定一个PHP回调函数, 当这个规则不满足条件时该函数会被调用。(译者注:此处的回调函数是匿名函数)
PS: 以上列表复制于Yii手册.
结语
ACF, 这种比较简单的访问授权控制, 适合用户系统角色不多的应用. 例如前台应用. 而后台应用, 通常会出现大量不同角色进行管理. 此时ACF就力不从心了, 没关系, 更强大的授权管理RBAC, 在Yii中也有很好的支持
- Yii2权限管理之ACF
- yii2授权之ACF
- Yii2全面解析之权限管理RBAC
- yii2权限管理
- Yii 2.0鉴权之访问控制过滤器(Yii2.0 Authorization By ACF)
- YII2 存取控制过滤器(ACF)
- Yii2-admin RBAC权限管理的实现
- Yii2-admin RBAC权限管理的实现
- Yii2-rbac权限基础--菜单menu管理
- Yii2-admin RBAC权限管理的实现
- yii2 rbac权限管理学习笔记
- 浅谈Yii2中rbac的权限管理
- Yii2框架管理后台权限设置机制
- Yii2如何使用存取控制过滤器(ACF)
- yii2项目实战-访问控制过滤器ACF讲解
- Yii2如何使用存取控制过滤器(ACF)
- Yii2-rbac权限基础--权限管理的实现
- yii2高级模板借助于yii2-admin&yii2-adminlte-asset的RBAC权限管理
- 首字母转换大小写以及实体类是否存在某个方法名
- 线程池的探索
- c++ gb2312 utf8 转换函数
- 单词记忆
- hdu 2222Keywords Search(AC自动机入门好题)
- Yii2权限管理之ACF
- LightOJ 1341 Aladdin and the Flying Carpet
- 多线程编程
- ajax
- 找出动词前面的并以动词命名
- 【Python版】OpenCV学习笔记(1):安装
- signal-利用中断信号来干别的事情
- 同源策略及跨域
- 常用数据库对象