Процесс проверки токена JWT в Adonis Js / Laravel - PullRequest
1 голос
/ 06 мая 2020

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

jwt: {
    serializer: 'lucid',
    model: 'App/Models/User',
    scheme: 'jwt',
    uid: 'email',
    password: 'password',
    options: {
      secret: Env.get('APP_KEY'),
      expiresIn: 1000000000,
    }
  }

Мне удалось получить пользователя, проверив этот токен через вызов API с почтальоном.

Теперь я вручную изменил email id из базы данных, который был uid при создании токена ранее, я все еще могу проверить предыдущий токен и получить данные пользователя через вызов api почтальона.

Мой вопрос: объект Adonis auth должен проверять этот токен при вызове await.auth.getUser(). но вместо того, чтобы делать это недействительным, эти возвращаемые данные с обновленным адресом электронной почты были изменены вручную из базы данных. Как работает этот процесс? Я думаю, это будет так же в Laravel.

1 Ответ

1 голос
/ 07 мая 2020

Ответ на forum.adonis js .com

Adonis использует только идентификатор пользователя для аутентификации.

Basi c токен Adonis: enter image description here полный токен

uid = идентификатор пользователя

Вы можете закодировать объект User в токен с помощью jwtPayload, а затем вручную проверить User данные:

Добавить экземпляр пользователя в полезную нагрузку

Включить jwtPayload при создании токена:

const user = await User.find(1)

// generate(user, [jwtPayload], [jwtOptions])
const token = await auth.generate(user, true)

Пример токена:

enter image description here полный токен

Получить данные полезной нагрузки

const data = auth.jwtPayload; // Get full Playload

const user = auth.jwtPayload.data; // Get user

Вывод (полная полезная нагрузка):

{
  "uid": 2,
  "data": {
    "email": "test@crbast.ch",
    "role": "admin",
    "created_at": "2020-05-06 11:26:36",
    "updated_at": "2020-05-06 11:26:36",
    "id": 2
  },
  "iat": 1588757196
}

Теперь вы можете проверить электронную почту

...