Yii2 带操作的Yi2 rest身份验证可以处理用户和来宾

Yii2 带操作的Yi2 rest身份验证可以处理用户和来宾,yii2,Yii2,我使用accessToken授权用户,因此我希望使用可选accessToken执行操作 我们在none-rest控制器中具有这种能力 像这样: public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['login', 'logout', 'signup'],

我使用accessToken授权用户,因此我希望使用可选accessToken执行操作 我们在none-rest控制器中具有这种能力 像这样:

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

排除不工作,因为如果用户发送令牌授权,他们将视为访客,而不是用户。

public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['authenticator']['except'] =  ['fetch-event','fetch-tournament-event'];
    return $behaviors;
}
有一个属性使auth filter在令牌存在时处理身份验证,但在令牌丢失时不引发异常

您只需在
可选
属性中设置操作ID,而不是
属性外:

公共功能行为()
{
$behaviors=parent::behaviors();
$behaviors['authenticator']['optional']=['fetch-event','fetch-contraction-event'];
返回$行为;
}

看起来你需要一个自定义验证器。你应该使用
除了
而不是
可选的
@Godzilla不应该。这两个属性做完全不同的事情。
except
属性将跳过给定操作的筛选器执行。因此,即使请求中存在访问令牌,
user
组件也将保持
guest
状态。