Django аутентификация и авторизация с Ajax на Vue

vokmar

Новичок
Пользователь
Ноя 17, 2020
1
0
1
Всем привет.

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

  1. В базе есть пользователи
  2. Я не использую никаких шаблонов Django, все Html на vue.js
  3. Через Axios я обращаюсь к контроллеру Django, который делает аутентификацию и авторизацию (примитивный вариант, только для теста)
  4. Аутентификацию проходит отлично, пользователь находится, сессия создается, ок, запрос отправляется во Vue, там все ок.
user = authenticate(request, username=usermame, password=password)
auth.login(request, user)

  1. Во Vue через туже форму входа делаю тот же запрос на аутентификацию (только для теста)
HTTP({
method: 'post',
url: 'login/',
data:
queryString.stringify(
{
login:this.login,
password: this.password,
session_key: this.$store.state.session
}),
session_key: this.$store.state.session
// config: { headers: {'Content-Type': 'application/x-www-form-urlencoded' }}
}
).then(response =>{
console.log(response.data.Token);
let a = response.data.Token;
this.$store.dispatch('sessionScore', a)
})

}


  1. При повторном обращении в тот же самый контроллер (is_authenticated) получаю Анонимного пользователя, пробовал в data включить идентификатор сессии, не помогло
def login (request):
if request.user.is_authenticated:
b = request.META.get('CSRF_COOKIE')
return JsonResponse({'active': 'ok', 'Token': b}, safe=False)
if request.method == 'POST':
usermame = request.POST.get('login')
password = request.POST.get('password')
user = authenticate(request, username=usermame, password=password)
active = False
if user is not None:
auth.login(request, user)
#auth_login(request, user)
active = True
c = {}
c.update(csrf(request))
v = c.get('csrf_token')
b = request.META.get('CSRF_COOKIE')
vb= request.session.session_key
return JsonResponse({'active': active, 'usermame': usermame, 'password': password, 'Token': vb}, safe=False)
else:
return JsonResponse({'active': active, 'usermame': '', 'password': '', 'err': 'Пользователь не существует'}, safe=False)
return JsonResponse({'active': 'active', 'usermame': '', 'password': '', 'err': 'Пользователь не существует'},
safe=False)


Что я делаю не так.

Сессии и т.д. я подключил.

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'boq',
]

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',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
]


Вот все импорты

rom django.contrib import auth
from django.http import JsonResponse
from django.shortcuts import render
from django.template.context_processors import csrf
from django.views.decorators.csrf import csrf_exempt

from .models import ModelSerialize, NameRashet
from rest_framework.response import Response
from rest_framework.decorators import api_view

from django.contrib.auth import authenticate, login as auth_login
 

Форум IT Специалистов