У меня есть небольшой вопрос.
Я делаю веб-сайт с помощью React, Redux и django rest framework. И я собираюсь реализовать аутентификацию с помощью django-rest-auth.
Когда пользователь входит в систему, django-rest-auth возвращает токен и идентификатор сеанса с заголовками. Я просто хочу использовать только идентификатор сеанса.
Пробовал с Postman, работает или нет. Во-первых, войдите в систему rest-auth/login с именем пользователя и паролем. У меня есть токен, я вижу sessionid и csrftoken внутри вкладок cookie. Затем, когда я попытался выйти из системы с заголовками, включающими значение X-CSRFToken: csrftoken, я смог успешно выйти из системы. Также я увидел, что значения «django_session» и «authtoken_token» исчезли в mysql.
Подходит ли этот рабочий процесс для аутентификации? Я имею в виду не использовать данный токен.





Это зависит от того, что для вас в порядке. Вы можете использовать сеансовую аутентификацию, но имейте в виду, что аутентификация по токену включена (вы можете отключить ее в настройках).
@Mickey в настройках settings.py у вас должно быть что-то вроде этого REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( ) }. Вам нужно удалить TokenAuthentication. Также из INSTALLED_APPS удалить 'rest_framework.authtoken'
@Mickey - И просто совет, основанный на моем опыте. Токены очень удобно использовать с React+DRF. Я не знаю, над каким проектом вы работаете, но я бы рекомендовал дважды подумать, прежде чем отключать токены
Спасибо, я попробую это. По вашему мнению, если я использую токен для аутентификации, мне нужно хранить его в локальном хранилище, верно? Я хочу использовать cookie, потому что я хочу получить доступ к идентификатору сеанса до того, как реакция отобразит начальную страницу.
@Mickey - вы может сохраняете его в localStorage, это обычная практика. Вы также можете использовать файлы cookie, верно, но есть некоторые проблемы с безопасностью (я не очень знаком с этим). Также есть sessionStorage, но это почти то же самое, что и localStorage.
В Где хранить токены - Auth0 рекомендуют не хранить токен в localStorage. Мы здесь говорим только о JWT, а не о токене? Известные веб-сайты, такие как Airbnb, Twitter или Kijiji, хранят токены в файлах cookie. Вот почему я решил использовать сеанс и файлы cookie. Но я начинающий, не могли бы вы сказать мне, какой выбор хорош для меня. Я делаю рубричные объявления, такие как гумтри, крейгслист. На моих веб-сайтах аутентифицированный пользователь будет использовать PayPal или Stripe для оплаты.
@Mickey — даже в этой статье говорят о проблемах как с localStorage (Локальное хранилище браузера (или хранилище сеансов) не является безопасным. Любые хранящиеся там данные могут быть уязвимы для межсайтовых сценариев.), так и с куками (Файлы cookie могут быть уязвимы для атак с подделкой межсайтовых запросов (CSRF или XSRF).). И я не совсем понимаю, как они предлагают хранить токены (Если у вас есть одностраничное приложение (SPA) без соответствующего внутреннего сервера, ваш SPA должен запрашивать новые токены при загрузке страницы) - каждый раз авторизовать пользователя?
@Mickey - в любом случае, безопасность - очень большая тема для обсуждения здесь.
Как я могу отключить токен авторизации и использовать только аутентификацию сеанса? Потому что django-rest-auth зависит от rest_framework.authtoken, верно? Нужно ли мне создавать собственный LoginView, который не возвращает токен?