我使用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;
}