REST API. Собственный метод аутентификации
Добавлено: 2020.12.13, 20:14
Приветствую! Переписываю самописное API на Yii2. В самописном API аутентификация реализована по логину, паролю и инн, такую логику аутентификации нужно перенести на Yii2. Первое что пришло на ум:
в конфигурации приложения:
В классе models\User реализовал IdentityInterface. Проверку существования пользователя сделал в:
Это работает, но название метода findIdentityByAccessToken не вяжется с тем, что в нем делается. Как мне реализовать собственный метод аутентификации?
в конфигурации приложения:
Код: Выделить всё
'user' => [
'identityClass' => 'app\models\User',
//'enableAutoLogin' => true,
'enableSession' => false,
],
Код: Выделить всё
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;
}