api 登入授权问题 [ 2.0 版本 ]
我现在有个文章的控制(ArticleController)器继承了公用控制器 (BaseController)
在BaseController中做了行为处理
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['class'] = Cors::className();
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
[
'class' => QueryParamAuth::className(),
'tokenParam' => 'accessToken'
],
],
// 不进行认证登录
'optional' => [],
];
$behaviors['rateLimiter']['enableRateLimitHeaders'] = false;
// 定义返回格式是:JSON
$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
return $behaviors;
}
在文章控制器里有index,create,edit,view 4个actions
想让index和view不用登入就可一访问
在代码 : // 不进行认证登录 的optional 该怎么设置?或者该怎么做?
文档说只要填写action 可以了,但是不同控制器有不同的权限,改怎么设置?
填了 'optional' => ['article/index']
没作用
nswindlights 补充于 2018-09-03 10:13
现在把验证放在每个控制里了,就是觉得不舒服。
忽然想到把不需要认证的放在一个数组里以控制器名称为key,获取当前controller Id 然后获取对应的数组
//不需要验证的action
$this->optional = [
'controllerName'=>['index','view'], ....
],
public function behaviors()
{
$controller_name = \Yii::$app->controller->id; $optional = empty($this->optional[$controller_name])? []:$this->optional[$controller_name]; $behaviors = parent::behaviors(); $behaviors['class'] = Cors::className(); $behaviors['authenticator'] = [ 'class' => CompositeAuth::className(), 'authMethods' => [ [ 'class' => QueryParamAuth::className(), 'tokenParam' => 'accessToken' ], ], // 不进行认证登录 'optional' => $optional, ]; $behaviors['rateLimiter']['enableRateLimitHeaders'] = false; // 定义返回格式是:JSON $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON; return $behaviors;
}
还不到是否可行,等有时间了试试
最佳答案
-
optional
值只能为 action name,所以你应该这么写'optional' => ['index']
。如果你这个 behaviors 在 BaseController 里面的话,你就要像其他办法了,比方说
if(true) { $behaviors['authenticator'] = [ 'class' => CompositeAuth::className(), 'authMethods' => [ [ 'class' => QueryParamAuth::className(), 'tokenParam' => 'accessToken' ], ], // 不进行认证登录 'optional' => [], ]; }
共 1 条回复nswindlights 回复于 2018-09-03 10:45 回复感谢提醒,现在在外面添加了获取 控制器名称,通过控制器名称获取对应的optional
其他 0 个回答
没有找到数据。
nswindlights 江苏太仓
注册时间:2014-09-18
最后登录:2020-03-30
在线时长:74小时58分
最后登录:2020-03-30
在线时长:74小时58分
- 粉丝5
- 金钱986
- 威望80
- 积分2526