В этом случае можно действовать двумя способами.
Для одного вы должны создать authtoken/
url, который возвращает токен аутентификации для текущего пользователя. Вы храните токен в браузере. Одно из мест для хранения токена находится в window.localStorage
.
При создании остальных API в django вы должны были предоставить им различные разрешения django. Таким образом, для тех, чье разрешение AllowAny
, аутентификация не требуется, но для тех, чье разрешение IsAuthenticated
, вы должны отправить токен в заголовках при выполнении любого запроса API к данному API.
Декодирование основано на типе токена. Если вы используете rest_framework_auth, в этом случае декодирование токена выполняется внутри, чтобы реализовать пароль для аутентификации пользователя. Если вы решили использовать аутентификацию на основе jwt, вы можете написать пользовательскую веб-аутентификацию, которая использует алгоритмы jwt и sha1 для кодирования и декодирования пароля соответственно. Если вы хотите получить более подробную информацию об аутентификации jwt, вы можете проверить https://thinkster.io/tutorials/django-json-api/authentication.
Данный метод имеет свои недостатки, поскольку любой, кто получает доступ к вашему токену, может легко его расшифровать, чтобы найти пароль. Таким образом, обычной практикой является использование соли в качестве дополнительного фактора для создания авторизованного токена. Таким образом, после однократного кодирования заданного пароля происходит другое кодирование, которое происходит с солью, и затем оно сохраняется в веб-интерфейсе. Это гарантирует, что токен, присутствующий во внешнем интерфейсе, не может быть декодирован любым, кто имеет к нему доступ, и только теми, кто имеет доступ и к соли, которая хранится для каждого пользователя в базе данных.
Понятие солей входит в картину, когда вы используете аутентификацию jwt. Там пароль сохраняется как «пароль + соль + ключ общего доступа», ключ общего доступа остается уникальным для базы данных, а соль остается уникальным для поля модели. Это гарантирует, что пароль трудно взломать. Вышеуказанная комбинация затем кодируется через jwt.