Yii2: как использовать разные методы аутентификации в API - PullRequest
0 голосов
/ 18 января 2019

Я работаю над API в Yii2, где мне нужно использовать разные методы аутентификации для разных действий.

Как установить CompositeAuth для action1, action2 и action3 и HttpBasicAuth для action4 и action5?

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                $user = User::find()->where(['username' => $username])->one();
                if ($user->verifyPassword($password)) {
                    return $user;
                }
                return null;
            },
        ],
    ];
}

1 Ответ

0 голосов
/ 18 января 2019

Вы можете прикрепить несколько вариантов аутентификации и использовать свойство only, чтобы указать список действий, на которые должно влиять каждое поведение:

public function behaviors() {
    return [
        'compositeAuth' => [
            'class' => \yii\filters\auth\CompositeAuth::className(),
            'authMethods' => [/* ... */],
            'only' => ['action1', 'action2', 'action3'],
        ],
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                $user = User::find()->where(['username' => $username])->one();
                if ($user->verifyPassword($password)) {
                    return $user;
                }
                return null;
            },
            'only' => ['action4', 'action5'],
        ],
    ];
}
...