有什么用vuejs和django进行身份验证的解决方案?

时间:2019-02-19 11:01:45

标签: python node.js ajax django

我将Django框架用作后端,并将vue.jswebpack用作前端。要实现身份验证,请通过ajaxDjango发送请求,并希望保留下一个请求的会话,但不能保留会话。

我使用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

请问有人可以帮我吗?

0 个答案:

没有答案