Аутентификация на основе угловых токенов, получение и сохранение профиля пользователя, лучшие практики - PullRequest
1 голос
/ 11 апреля 2019

Я начал несколько месяцев назад создавать свою первую аутентификацию на основе токенов для проекта Angular, и теперь мне нужно ее обновить. До сих пор моя конечная точка / login возвращала только токен, который хранится в локальном хранилище. Пользователь входит в систему, когда токен присутствует и действителен. Но теперь мне нужно также отобразить имя пользователя на панели навигации и роль пользователя, потому что мне нужно создать защитную роль.

Я прочитал много статей и вопросов / ответов на эту тему, но я действительно запутался, что является лучшим способом получить профиль пользователя.

Получить

  1. Получите данные пользователя непосредственно при входе в систему вместе с токеном
  2. Ровно после входа в систему, если запрос на вход успешен, выполните другой запрос, например: / me
  3. Добавить имя пользователя и роль в полезной нагрузке токена

Магазин

Также данные должны быть постоянными (если пользователь закроет и откроет браузер), как их можно сохранить? Должен ли я использовать хранилище (локальное хранилище / cookie)? Или выполнять запрос каждый раз, когда пользователь открывает приложение?

Используйте

Здесь я понятия не имею. Если я использую хранилище, я должен читать их каждый раз? Или я должен использовать тему?

Из вашего опыта, какой лучший способ сделать это? Или у тебя есть другие идеи? Заранее спасибо!

1 Ответ

1 голос
/ 11 апреля 2019

Я имею дело с этим, я надеюсь помочь вам.

  1. Ответ api/login такой:
{
  token: 'your token...',
  expireAt: 'token expire time',
  user: {
    name: 'admin',
    role: 'master'
    // ... else user info
  }
}

Используйте localStorage для сохранения токена и информации о пользователе.Вы можете получить информацию о токене из локального хранилища, когда откроете тот же веб-сайт в следующий раз, и определите, нужно ли вам повторно войти в систему в зависимости от срока действия.

cookie следуетне сохранять сложную или большую структуру данных, потому что это:

  • Неудобная операция
  • Размер ограничен
  • Каждый раз, когда http-запрос должен принимать
...