Yii2 常用配置和概念小记
来源:互联网 发布:陈自强 知乎 编辑:程序博客网 时间:2024/06/08 07:49
熟能生巧,学了就写
从2015年开始弄 yii2 的开发,也是一路瞎摸过来。写下来也是为了省得重复思考,希望别人也用得上,不定期更新哈:
- 类级别的权限配置
- 请求方法中的权限配置
- 权限配置的数据格式
- Yii::$app 的常用属性
类级别的权限控制
配置自定义角色(到同一个/多个请求 action)
return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'actions' => ['view'], /* 这里允许访问当前控制器的 actionView($id) 方法,$id 参数仅在下面的 matchCallback 和/或 denyCallback 中声明和处理,注意这两个 callback 都写在 rules 下面, 某个 action 的配置块里 */ 'roles'=>['@'], /* @ 代表以登陆的任何用户, ? 代表未登陆的用户 */ 'matchCallback' => funciton( $rule,$cation ){ return Yii::$app->authManager->checkAccess(Yii::$app->user->identity->getId(), 'canVisitAdmin', ['profile'=>['id'=>Yii::$app->requestedParams['id']]]); } /* checkAccess($userId,$permissionName,$dataToPassInArray) 方法 可以检测某个用户具有的权限,这里返回 true 或 false 来决定这个 action 能否执行,我们检查了用户是否具有 'canVisitAdmin' 这个权限。代码中传递给规则类的 'profile' 数组中的 'id' 通过 Yii::$app->requestedParams['id'] 在请求 url 的参数中获得 */ ] ], ] ];
配置多个角色(到同一个/多个请求 action)
return [ 'access' => AccessControl::className(), 'rules' => [ 'allow' => true, 'actions' => ['index','create'], 'roles' => ['@','?'] ]];
请求方法中的权限控制
/*** 我们在含有 'canVisitAdmin' 权限的规则类中设置了对 id 的校验,此处* 省略规则类的具体代码* 适用于控制器中的单个 action 方法*/public function actionView($id){ if(Yii::$app->user->can('canVisitAdmin',['id' => $id])){ // can() 的最后一个参数(数组形式)可填可不填 // 校验过程间接调用了 Yii::$app->authManager-> checkAccess($userId, $permissionName,$dataToPassInArray) 方法 // 用户含有 'canVisitAdmin' 权限且 id 校验无问题 // 执行校验成功的代码 } else { // 执行校验失败的代码 }}
权限配置的数据格式
数据库储存:序列化的 json 数组
文件储存: 序列化的 php 数组
Yii::$app 的常用属性
待续
0 0
- Yii2 常用配置和概念小记
- Yii2-常用应用配置
- YII2 学习笔记 --- Application 常用配置参数
- 关于Yii2 behaviors() 小记
- yii2 常用的before和after汇集
- yii2 和 phpstorm 的配置git
- yii2 advanced版本dev和pro配置
- yii2 rabc 的使用和配置
- yii2添加module配置和常见问题解决
- Yii2一些方法技巧小记
- Yii2 配置yii2-redis扩展
- socket概念和常用函数
- Promise概念和常用api
- Go常用概念和定义
- Opencv基本操作和配置小记
- VS工程配置中的一些常用概念
- Yii2 常用rules规则
- YII2常用表单元素
- JFinal的简单原理
- BindService详解
- php Warning: Module 'modulename' already loaded in Unknown on line 0
- 最近的两个小项目,1:在Vscode里写C/C++
- 文件上传异步
- Yii2 常用配置和概念小记
- Linux下svn服务端的安装与配置
- 数据分片路由抽象模型
- 医疗APP功能解析一微医
- 最近的两个小项目,2:Python webapp的docker镜像
- 在Linux直接运行安卓程序
- 练习三1001
- 圆形TextView的实现
- 山东省第五届ACM省赛题——Painting Cottages(求点集的划分)