yii2rest身份验证和action可以同时处理用户和访客



我使用accessToken来授权用户,所以我希望使用可选的accessToken进行操作我们在无息控制器中具有此功能像这样:

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['login', 'logout', 'signup'],
'rules' => [
[
'allow' => true,
'actions' => ['login', 'signup'],
'roles' => ['?','@'],
],

],
],
];
}

exclude不起作用,因为如果用户发送令牌进行授权,他们将被视为访客,而不是用户。

public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator']['except'] =  ['fetch-event','fetch-tournament-event'];
return $behaviors;
}

有一个optional属性,它使auth filter在令牌存在时处理身份验证,但在令牌丢失时不会引发异常。

您所需要做的就是在optional属性而不是except属性中设置操作ID:

public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator']['optional'] =  ['fetch-event','fetch-tournament-event'];
return $behaviors;
}

最新更新