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) 方法 可以检测某个用户具有的权限,这里返回 truefalse 来决定这个 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
原创粉丝点击