REST API. Собственный метод аутентификации

Всё что касается построения API
Ответить
dkw15g
Сообщения: 4
Зарегистрирован: 2020.12.02, 23:50

REST API. Собственный метод аутентификации

Сообщение dkw15g »

Приветствую! Переписываю самописное API на Yii2. В самописном API аутентификация реализована по логину, паролю и инн, такую логику аутентификации нужно перенести на Yii2. Первое что пришло на ум:
в конфигурации приложения:

Код: Выделить всё

        'user' => [
            'identityClass' => 'app\models\User',
            //'enableAutoLogin' => true,
            'enableSession' => false,
        ],
В классе models\User реализовал IdentityInterface. Проверку существования пользователя сделал в:

Код: Выделить всё

    public static function findIdentityByAccessToken($token, $type = null)
    {
        $headers = Yii::$app->request->headers;

        if (!isset($headers['inn'], $headers['login'], $headers['password'],
            $headers['ofd_api_key'])) {
            throw new \yii\web\UnauthorizedHttpException('Не достаточно параметров для авторизации', 401);
        }

        if (!static::findOne(['access_token' => $token])) {
            throw new \yii\web\UnauthorizedHttpException('Нет авторизации', 401);
        }

        $model = new User;

        $userData = $model->findOne([
            'inn' => $headers['inn'],
            'login' => $headers['login']
        ]);

        if (!$userData) {
            throw new \yii\web\UnauthorizedHttpException('Нет авторизации', 401);
        }

        return $userData;
    }
Это работает, но название метода findIdentityByAccessToken не вяжется с тем, что в нем делается. Как мне реализовать собственный метод аутентификации?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: REST API. Собственный метод аутентификации

Сообщение samdark »

Я бы сделал свой InnLoginPassowrdAuth extends AuthMethod.
dkw15g
Сообщения: 4
Зарегистрирован: 2020.12.02, 23:50

Re: REST API. Собственный метод аутентификации

Сообщение dkw15g »

samdark писал(а): 2020.12.15, 18:14 Я бы сделал свой InnLoginPassowrdAuth extends AuthMethod.
Спасибо! Это работает.
Ответить