Настроить паспортные запросы во время аутентификации - PullRequest
0 голосов
/ 12 декабря 2018

Для каждого запроса я обнаружил, что запускается 4 запроса для проверки пользователя и токена.Одним из них является выбор пользователя (выберите * из пользователя) на основе идентификатора пользователя.Эти запросы выполняются Passport / Laravel. Но я хочу изменить этот запрос, добавив одно поле статуса, а также проверить, не стал ли какой-либо пользователь недействительным в течение срока действия токена.Если мы проверяем только по идентификатору, то если какой-либо пользователь становится неактивным (изменяя статус, мы также не сможем остановить пользователя, так как удаление токена для пользователя не является хорошим решением для меня).

Запросы на каждый запрос от Passport Laravel:

select * from oauth_access_tokens where id = ? 
select * from user where id = ? limit 1 ["2"] 
select * from oauth_access_tokens where id = ? 
select * from oauth_clients where id = ?

Итак, кто-нибудь может сказать мне, как изменить запрос "select * from user where id" в паспорте во время проверки токена.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Вы можете добавить этот метод для вашей User модели (или любой модели, которую вы аутентифицируете с помощью паспорта)

    ...
    public function findForPassport($username)
    {
        return $user = (new self)->where('email', $username)->where('is_active', 1)->first();
    }
    ...

, конечно, вы можете изменить is_active в зависимости от того, какой столбец вы используете (и/ или любое ограничение запроса по этому вопросу), если оно возвращает Illuminate\Contracts\Auth\Authenticatable контракт.

0 голосов
/ 21 декабря 2018

Я бы не стал изменять поведение по умолчанию для паспортов, так как понятия не имею, что еще это может повлиять как сейчас, так и в будущих обновлениях.

Лучше всего было бы подключиться к событиям паспорта и применить васбизнес-логика для слушателя, который вызывается при срабатывании событий

...