Есть ли способ избежать нескольких поколений токенов для одного пользователя, если он / она пытается войти в разные браузеры? - PullRequest
0 голосов
/ 26 декабря 2018

Я использую django-rest-framework-jwt в своем бэкэнде и вызываю API из Angular Project.Когда пользователь пытается войти в несколько браузеров, каждый раз для него генерируется новый токен в новом браузере.И каждый токен действителен.Я хочу, чтобы, когда пользователь уже вошел в один браузер и попытался войти в другой браузер, предыдущий токен для первого браузера должен быть признан недействительным.

1 Ответ

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

Одним словом, NO , вы не можете просто избежать генерации токенов, если не сделаете небольшой поворот в модуле django-rest-framework-jwt.Но это уже не чистый jwt.

JWT расшифровывается как JSON Web Tokens и представляет собой механизм обмена данными между компьютерными системами, который удобен для генерации заголовков авторизации, которые можно использовать для реализации бесстатовой аутентификации ввеб-приложения.

SO

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

Это означает, что модуль django rest jwt будет создавать токен на основе текущей метки времени системы при каждом запросе пользователя.для этого.

Помните, что вы не можете удалить токен jwt.Потому что он не хранится в базе данных.Так что, если ваш токен подделан, это все.Вы ничего не можете сделать с этим, если жизненный цикл токена не заканчивается и токен не истекает.

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

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

  • измените систему jwt на ту, которая подходит вам (я делал это раньше).Например, добавьте идентификатор поиска в базе данных и проверьте токены, привязанные к каждому пользователю.Я знаю, что это больше не JWT, но вы все еще можете использовать некоторые вкусности этого.Например, не удаляйте базу данных по недействительным токенам jwt и сохраняйте в ней некоторые полезные данные, если проверено, не обращайтесь к базе данных для этой информации.Как разрешения и ...

...