Я использую фреймворк Django
в качестве бэкенда, а vue.js
и webpack
для фронтэнда.для реализации аутентификации отправьте запрос через ajax
на Django
и хотите сохранить сеанс для следующих запросов, но не можете сохранить сеанс.
Я использую модуль узла request
для отправки запроса и использую jar
сохранить сеанс, но снова получить ошибку 403.это означает, что jar
не сохраняет сеанс для этого пользователя.
в vuejs:
var request = require('request');
get_jar(){
if(this.jar){
return this.jar;
}
this.jar = request.jar();
return this.jar;
}
send_ajax(url, data, method, callback){
request(
{
url: url,
method: method,
form: data,
jar: this.get_jar(),
},
function(err, res, body){
callback(err, res, body)
});
}
в django:
@method_decorator(csrf_exempt, 'dispatch')
class Login(View):
@staticmethod
def post(request):
email = request.POST.get('email', None)
password = request.POST.get('password', None)
user = authenticate(request, username=email, password=password)
if user is None:
return JsonResponse({'message': 'incorrect username or password'}, status=403)
else:
login(request, user)
return JsonResponse({'message': 'user logged in'})
декоратор для проверки журнала пользователяв:
def user_login_required(method):
@wraps(method)
def wrap(request, *args, **kwargs):
if request.user.is_authenticated:
return method(request, *args, **kwargs)
else:
return JsonResponse({'message': 'user not recognized'}, status=403)
return wrap
Может кто-нибудь мне помочь, пожалуйста?