django和angularJS权限\u需要匿名用户
我正在编写一个django/angularjs应用程序,并试图使用用户权限授权所需的@permission\u 我正在从客户端返回两个标题-sessionId和csrf token,但是@permission\u required method user是匿名用户,尽管当我登录用户时,我使用-loginrequest,user method,并且用户arg更新为当前用户: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):
@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文件中全局指定它