我将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
请问有人可以帮我吗?