Javascript django tastypie自定义身份验证

Javascript django tastypie自定义身份验证,javascript,jquery,django,authentication,tastypie,Javascript,Jquery,Django,Authentication,Tastypie,因此,我实现了django tastypie和jquery ajax post basic身份验证,它可以工作: tastypie: class RatingResource(ModelResource): city = fields.ForeignKey(CityResource, 'city') user = fields.ForeignKey(UserResource, 'user') class Meta: queryset = Rating.ob

因此,我实现了django tastypie和jquery ajax post basic身份验证,它可以工作:

tastypie:

class RatingResource(ModelResource):
    city = fields.ForeignKey(CityResource, 'city')
    user = fields.ForeignKey(UserResource, 'user')
    class Meta:
        queryset = Rating.objects.all()
        resource_name = 'rating'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()
查询:

  $.ajax({
    type: 'POST',
    url: url,
    data: data,
    crossDomain: true,
    beforeSend: function (xhr){ 
            xhr.setRequestHeader('Authorization', make_base_auth('yuri','y')); 
    },
    success: function (){
        alert("200"); 
    },
    contentType:'application/json',
    dataType: 'application/json',
    processData: false,
  });
我的问题是,如何编写自己的自定义身份验证

我试着这样做:但我得到的是一个未经批准的401计划。 以下是我失败的尝试:

class SillyAuthentication(BasicAuthentication):
    def is_authenticated(self, request, **kwargs):
        if 'test' in request.user.username:
          return True

        return False

    # Optional but recommended
    def get_identifier(self, request):
        return request.user.username

class RatingResource(ModelResource):
    city = fields.ForeignKey(CityResource, 'city')
    user = fields.ForeignKey(UserResource, 'user')
    class Meta:
        queryset = Rating.objects.all()
        resource_name = 'rating'
        authentication = SillyAuthentication()
        authorization = DjangoAuthorization()


function make_base_auth(user, password) {
            var tok = user + ':' + password;
            var hash = btoa(tok);
            return "Silly " + hash;
          }
  $.ajax({
    type: 'POST',
    url: url,
    data: data,
    crossDomain: true,
    beforeSend: function (xhr){ 
            xhr.setRequestHeader('Authorization', make_base_auth('yuri','y')); 
    },
    success: function (){
        alert("200"); 
    },
    contentType:'application/json',
    dataType: 'application/json',
    processData: false,
  });

如何使用自定义身份验证调整我的代码?

如果您发布不起作用的代码,而不是起作用的代码,这将非常有用。我现在在不起作用的代码上方添加了代码。有什么想法吗?你用的是哪个版本的tastypie?身份验证/授权在某些最新版本中更改了其api,因此请确保使用正确的文档。还有-AJAX针对的
url
是什么?尝试将一些debug
print
语句添加到Auth类代码中,但无法查看它是否真的在给定位置失败,而不是在其他位置。我使用的是最新的tastypie 0.9.14。。我想我看到了正确的文档。url为var url='';