Нужен совет по аутентификации пользователя переднего/заднего плана

Я использую фиктивный сервер expressjs сзади и ember (ember-simple-auth) спереди с аддоном ember-simple-auth-token. Я использую токены JWT. Я пытаюсь решить, как лучше отправить информацию о пользователе. Обычно, когда пользователь отправляет свои учетные данные, я создаю новый токен, сохраняю его копию в базе данных (я использую mongodb), отправляю ее во внешний интерфейс, а затем использую токен для получения информации о пользователе. У меня есть маршрут /auth/token (который аутентифицирует и отправляет токен, делает копию и сохраняет его в базе данных) и маршрут /current_user, который вызывается при первоначальном входе в систему, который использует токен и извлекает информацию о пользователе.

Лучше просто отправить информацию о пользователе в начальной полезной нагрузке токена, чем иметь отдельный маршрут? Должен ли я хранить копию в базе данных для сравнения и получения информации о пользователе?

И каковы преимущества обновления токена?


person Horizon    schedule 17.09.2016    source источник


Ответы (1)


вы используете Jwt-Auth для аутентификации. - Насколько мне известно, после отправки учетных данных пользователя вы ответите токеном, если учетные данные верны, в противном случае отправьте ошибку.

-почему вы сохраняете токен в БД?. вы отправите токен клиенту (без гражданства). Если клиент запрашивает данные, нам нужно проверить токен. если он подтверждает, верните правильный ответ, в противном случае верните ошибку токена.

-Зачем вам нужно обновление токена? в целях безопасности. После ответа каждый раз меняйте токен. TTL вашего токена будет действителен в течение некоторого времени (скажем, 60 минут). после этого он будет недействителен.

Вот как работает JWT.

person Harshavardhan    schedule 17.09.2016
comment
Вот у меня настроено. Пользователь вводит свое имя пользователя/пароль, я отправляю им токен. Прямо сейчас у меня есть маршрут с именем /current_user, когда пользователь получает свой токен, он автоматически вызывает /current_user, я использую токен, чтобы проверить, какую информацию о пользователе отправлять (поскольку у меня есть копия токена в базе данных, я сравниваю два и отправить текущую информацию о пользователях). Имеет ли смысл просто отправлять информацию о пользователе в начальной полезной нагрузке? Должен ли я декодировать токен вместо того, чтобы выполнять сравнение и отправлять данные обратно во внешний интерфейс? - person Horizon; 18.09.2016
comment
Я думаю, что я спрашиваю, как вы знаете, что отправить, если у вас нет на что ссылаться? - person Horizon; 18.09.2016
comment
пожалуйста, перейдите по этой ссылке. github.com/tymondesigns/jwt-auth/wiki/Authentication $user = JWTAuth::parseToken()-›toUser(); дает данные пользователя. и затем вы можете проверить тип пользователя из этого. Не нужно сохранять токен в БД (вы делаете это неправильно). На самом деле токен содержит информацию о пользователе, временные метки и т. д. (в закодированном виде). пожалуйста, проверьте в вашем случае, как получить данные из токена. - person Harshavardhan; 18.09.2016
comment
Спасибо, я нашел лучший способ. - person Horizon; 21.09.2016