首页 文章

Django REST从服务器登录

提问于
浏览
1

我正在使用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 回答

  • 1

    如果你想使用SessionAuthentication,你必须在同一台主机上 . 当您从其他主机访问该页面时,服务器无法检查您是否是同一用户 .

    如果您的angular.js应用程序在不同的主机上运行,您应该通过TokenAuthentication或一些更复杂的方法(如JSON WTA)进行身份验证 .

相关问题