YII 授权

参考:http://www.yiichina.com/doc/guide/2.0/security-authorization


授权问题主要是依靠Yii框架的ACF 和 RBAC

单纯的ACF就是看一个用户是否有这个控制器的操作权利,一般情况下是不会单独的使用这个授权,更多的是使用RBAC为主,借助ACF来实现


使用框架的授权组件要在配置文件里加载:

components=>[

'authManager' => 'yii\dbrc\DbManager',

]

我使用的是依赖数据库的方式,还有一种方式是使用'authManager'=>'yii\rbac\PhpManager',是存储在脚本文件中

使用数据库依赖要用四个数据表:auth_item.auth_item_child,auth_assignment,auth_rule,

框架提供了现成的创建数据表的sql语句: vendor\yiisoft\yii2\rbac\migration\schema-mysql.sql


四个表的用途和字段

auth_item:保存要控制的原子权限和较色,type=1:角色,type=2原子权限, name:原子权限,

auth_item_child:角色和权限的对应关系的保存。 parent:角色,child:原子权限

auth_assignment:角色和用户的对应关系 item_name:角色的名称,user_id:用户的ID

auth_rule:认证的规则,


将数据库的对应数据加到ACF的实现中

在控制器中

behaviors() {

rules=> [

'actions' => 控制器的动作,

'allow'=>true,

'roles'=>原子权限

]

}

我保存的原子权限包括了action,

actions 和 roles 是从auth_item中读取出来的,

roles一般包括三个角色,?:guest, @:登录的人,

我写的原子权限是要调用Yii::$app->user->can(auth_time::name)


这样就利用了框架的功能来实现了执行动作的检测

同事实现了一个比较好的方法:把module,controller,action 和原子权限保存到一个表中,

在controller中使用Yii->$app->controller->id,Yii::$app->app->controller->module->id;来获取这个动作的原子权限


只用在保存原子权限的时候维护这个数据表。


YII很强大,要逐渐的深入才能体会.........


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值