即使在登录Angularjs、django tastypie之后,request.user也是匿名的

即使在登录Angularjs、django tastypie之后,request.user也是匿名的,django,angularjs,tastypie,Django,Angularjs,Tastypie,我在使用Tastypie和Django登录时遇到了很大的问题 我通过AngularJSs发送我的登录请求,如下所示: var request = $http({ method: "post", url: API_URL + "api/v1/global/login/", data: {'user':$scope.login_user, 'password':$scope.pas

我在使用Tastypie和Django登录时遇到了很大的问题

我通过AngularJSs发送我的登录请求,如下所示:

var request = $http({
                    method: "post",
                    url: API_URL + "api/v1/global/login/",
                    data: {'user':$scope.login_user, 'password':$scope.password}


                });
然后在api.py中的LoginResource中,我添加了单独的函数(我的项目中的不同类型的用户):

request.user.is_authenticated()显示真值

我的
api.py
中有MessageResource:

class MessagesResource(ModelResource):
    login_user = fields.ForeignKey(UserResource, 'login_user', null=True, full=True)
    from_person = fields.ForeignKey(UserResource, 'from_person', null=True, full=True)
    to_person = fields.ForeignKey(UserResource, 'to_person', null=True, full=True)
    create_user = fields.ForeignKey(UserResource, 'create_user', null=True, full=True)
    update_user = fields.ForeignKey(UserResource, 'update_user', null=True, full=True)
    class Meta:
        allowed_methods = ['get','post','delete','put','patch']
        queryset = Messages.objects.all()
        resource_name = 'messages'
        authorization = Authorization()
        authentication = Authentication()
        always_return_data = True
        filtering = { 
            'from_person':ALL,
            'to_person':ALL_WITH_RELATIONS,
            'status':ALL
                    }

    def get_object_list(self, request):
        print('request.user.id=',request.user.id)
        return super(MessagesResource, self).get_object_list(request).filter(to_person__id=request.user.id)
在这里,
get\u object\u list request.user.id
是None。我做错了什么

注意:登录登录控制器后,我重定向到“
Dashboard.html
”。。此重定向在此请求中是否有效

编辑:这是我的登录资源

class GlobalLoginResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        allowed_methods = ['get','post']
        resource_name = 'global'
        authorization = DjangoAuthorization()
        excludes = ['password']

如果您使用的是标准的
身份验证
,这意味着“根本没有身份验证”,则方法
经过身份验证
不会检查或分配用户请求。所以user
bundle.request.user
在这个特定的资源中是匿名的。我看到您已经在登录资源中注册了请求。因此,您必须在登录时使用
sessionauthentication
或生成api\u密钥。并在
MessageResource
中将其用作
ApiKeyAuthentication
或其他

您应该了解
是如何通过身份验证的
适用于每种身份验证方法的:


注意响应:重定向与此无关。

因此,在添加会话身份验证后,它会阻止对显示GET 401(未经授权)的消息api的调用。。但我已经登录了,并且浏览器上存在会话。请查看编辑。我想您必须自定义AngularJS请求才能正确处理Django会话。但这是另一个问题:
class GlobalLoginResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        allowed_methods = ['get','post']
        resource_name = 'global'
        authorization = DjangoAuthorization()
        excludes = ['password']