2015-11-08 7 views
0

Я построил API, который аутентифицирует запросы на основе токенов доступа. Эти токены истекают примерно через 30 минут, после чего необходимо отправить токен обновления, или пользователь должен повторно аутентифицироваться, чтобы получить новый токен доступа. Я храню маркеры в базе данных, как показано ниже: user_id | селектор | access_token | Обновить | generate_at Хэши жетонов хранятся. Итак, как мне реализовать несколько логинов? Отправлять ли существующие маркеры на новое устройство или создавать новые токены и хранить что-то вроде идентификатора устройства в базе данных?Как реализовать несколько одновременных логинов?

ответ

0

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

Правильный способ сделать это будет для самого маркера иметь временную метку или время истечения срока. Очевидно, что эта информация должна быть подписана сервером. Взгляните на эту библиотеку для примера о том, как это сделать: http://pythonhosted.org/itsdangerous/

+0

Я так и не думал о маркерах. Однако завершился внедрение JWT. Благодаря! – Anush

+0

JWT идеально подходит для этого. Я совсем забыл об этом. –

+0

Могу ли я использовать JWT для кодов предоставления полномочий авторизации (oauth2) или их следует хранить в БД (не без гражданства), но я должен убедиться, что они используются только один раз. – Anush

Смежные вопросы