Javascript django tastypie自定义身份验证
因此,我实现了django tastypie和jquery ajax post basic身份验证,它可以工作: 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
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
是什么?尝试将一些debugprint
语句添加到Auth类代码中,但无法查看它是否真的在给定位置失败,而不是在其他位置。我使用的是最新的tastypie 0.9.14。。我想我看到了正确的文档。url为var url='';