У меня возникли проблемы с сохранением токенов во время сеанса. Я нашел несколько решений по stackoverflow, но ни одно из них не сработало.
в настоящее время я храню токен пользователя, когда клиент отправляет запрос POST на / api / login
, а вот мои просмотры logi c
request.session['token'] = auth.token.key
request.session.modified = True
- Я на 100% уверен, что
auth.token.key
не None
, и logi c хранится нормально.
но когда дело доходит до / api / update (какой-то пример API), я всегда получаю None
вот как я получаю элемент из сеанса:
print(request.session.get('token'))
** Код выше всегда возвращает None * *
Я читал Django документы. Я установил промежуточное программное обеспечение сеанса и приложение сеанса:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'user'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
AUTHENTICATION_BACKENDS = (
'user.auth.AuthBackend',
'django.contrib.auth.backends.RemoteUserBackend',
'django.contrib.auth.backends.ModelBackend',
)
Я выполнил все миграции. django_session
таблица существует.
EDITED:
вид входа:
- У меня есть бэкэнд аутентификации клиента
@api_view(['POST'])
def login(request):
# convert json data into dictionary
data = get_data(request)
print(request.session.get('token'))
auth = authenticate(
email = data['email'],
password = data['password']
)
if auth:
# store user's token into sesion
request.session['token'] = auth.token.key
print(request.session['token'])
user = UserModelSerializer(auth.user)
return Response(
user.data,
status = status.HTTP_200_OK
)
else:
return Response(
message("user doestn't exist | incorrect password"),
status = status.HTTP_403_FORBIDDEN
)
Обновить вид (где я не могу получить данные сеанса):
@api_view(['POST'])
def update(request):
print(request.session.get('token'))
return Response("its ok.")