我正在使用AngularJS作为客户端fw和django rest框架 . 我在认证部分,并想知道是否可以POST我们/ pw然后在后端登录用户然后能够使用@login_required访问 .
我想避免在客户端使用$ cookies,然后如果我没有登录服务器响应404,然后angular将用户重定向到登录页面 . 当用户登录时,用户也可以访问服务器 .
甚至可以在localhost:8000上的django登录,然后从localhost:82访问?
为了尝试我已经登录到admin-page(现在用户已登录),然后从localhost:82访问一些无法正常工作的信息
angular.js:11442 GET http://localhost:8000/website/api/order/?format=json 404 (Not Found)
@api_view(['POST'])
def login(request):
if request.method == 'POST':
#print(request.data['password'])
username = request.data['username'];
password = request.data['password'];
user = auth.authenticate(username=username,password=password);
if user is not None:
if user.is_active:
auth.login(request,user);
return Response(200)
else:
return Response(404)
else:
return Response(404)
验证工作,当我输入真实的用户名和密码时,我得到200作为响应,如果我从客户端登录管理员帐户,如果我输入localhost / admin,我将无法访问管理员页面?目前,当我尝试访问admin-page时,我还没有登录 .
1 回答
如果你想使用SessionAuthentication,你必须在同一台主机上 . 当您从其他主机访问该页面时,服务器无法检查您是否是同一用户 .
如果您的angular.js应用程序在不同的主机上运行,您应该通过TokenAuthentication或一些更复杂的方法(如JSON WTA)进行身份验证 .