Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django和angularJS权限\u需要匿名用户_Django_Angularjs - Fatal编程技术网

django和angularJS权限\u需要匿名用户

django和angularJS权限\u需要匿名用户,django,angularjs,Django,Angularjs,我正在编写一个django/angularjs应用程序,并试图使用用户权限授权所需的@permission\u 我正在从客户端返回两个标题-sessionId和csrf token,但是@permission\u required method user是匿名用户,尽管当我登录用户时,我使用-loginrequest,user method,并且用户arg更新为当前用户: @api_view(['GET', 'POST', 'DELETE']) def log_in_view(request):

我正在编写一个django/angularjs应用程序,并试图使用用户权限授权所需的@permission\u

我正在从客户端返回两个标题-sessionId和csrf token,但是@permission\u required method user是匿名用户,尽管当我登录用户时,我使用-loginrequest,user method,并且用户arg更新为当前用户:

@api_view(['GET', 'POST', 'DELETE'])
def log_in_view(request):
    body = request.body
    json_body = json.loads(body)
    email = json_body.get("email")
    password = json_body.get('password')
    user = authenticate(email=email, password=password)
    session = request.session

    if user is not None:
        request.session['email'] = email
        request.session['password'] = password
        session.set_expiry(900)
        session.save()
        session_key = session.session_key
        login(request, user)
        crcf = get_token(request)
        response_body = {}
        response_body.update({"session_key" : session_key})
        response_body.update({"csrf" : crcf})
        return HttpResponse(json.dumps(response_body), content_type="text/json", status=200)
    else:
        return HttpResponse("could not authenticate user", content_type="text/plain", status=401)
有人知道我做错了什么吗


干杯

登录用户不需要所有这些东西。我的意思是,您不需要手动设置会话,也不需要返回csrf令牌

@api_view(['GET', 'POST', 'DELETE'])
def log_in_view(request):
    body = request.body
    json_body = json.loads(body)
    email = json_body.get("email")
    password = json_body.get('password')
    user = authenticate(email=email, password=password)

    if user:
        login(request, user)
        response_body = {}
        response_body['user'] = user
        return HttpResponse(json.dumps(response_body), content_type="text/json", status=200)
    else:
        return HttpResponse("could not authenticate user", content_type="text/plain", status=401)

通过使用@api_view,我假设您使用的是Django REST框架

默认情况下,django rest框架的每个api视图都不依赖于django身份验证。如果希望视图使用django身份验证,则应添加适当的@authentication\u类。。。修饰视图或在settings.py文件中全局指定它