rest api RBAC权限与ACF问题 [ 2.0 版本 ]
我在给REST api 配置 RBAC 权限时发现 使用ACF 会优先执行全局配置的ACF
可时用户信息还未认证
RBAC 是 ACF 在配置文件中配置的
as access
认证是Controller
中的behaviors
中配置的authenticator
这样做会在 authenticator
还未生效时就执行的是 access
的 RBAC
认证
我尝试将Access
写在Controller
的behaviors
中但是这样就必须每个 Controller
都要加 behaviors
但是第三方的插件扩展是不能每个都去加的 请问这有什么解决方案么?
以下是部分代码
配置文件中设置
···//
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
//这里是允许访问的action
//controller/action
'user/login',
'user/signup',
//'*'
]
],
//...
Controller 中代码
...//
public function behaviors() {
return ArrayHelper::merge ([
'contentNegotiator' => [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
'authenticator' => [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBasicAuth::className(),
HttpBearerAuth::className(),
[
'class' => QueryParamAuth::className(),
'tokenParam' => 'token',
],
],
'optional' => $this->authOptional(),
],
]
],parent::behaviors());
//...
共 3 个回答
-
johnny1991 回答于 2017-04-19 20:07 举报
由于Module的behaviors比controller的behaviors方法先执行,所以,authenticator的验证可以写在Module的behaviors里面
-
我也遇到同样的问题,没有办法父类没有AccessControl
共 1 条回复DicksonLee 回复于 2017-10-13 18:49 回复我是用了一个父类 Controller 在 behaviors 中处理的
DicksonLee
注册时间:2016-02-19
最后登录:2020-02-21
在线时长:20小时53分
最后登录:2020-02-21
在线时长:20小时53分
- 粉丝2
- 金钱480
- 威望0
- 积分680