我想使用Backbone.js和Django构建单页面应用程序。
对于检查用户是否经过身份验证,
我在django方面写了一个方法get_identity方法。 如果request.user.is_authenticated为true,则返回request.user.id,否则返回Http404
在骨干方面,我定义了一个用户模型,并定期对get_identity进行ajax调用。
我认为这是检查用户是否经过身份验证的最简单方法。
对于学习单页面应用程序,如果可能的话,我希望这种方式比这种方式更明智,更有效。
那你对此有何建议?当我搜索Django + Backbone.js +用户身份验证时,我找不到任何令人满意的结果,我真的很想知道人们如何做这个简单的操作。
任何帮助或想法都将受到赞赏。
(顺便说一下,我试图定期读取cookie,但客户端无法访问HttpOnly True标记的cookie。)
Django views.py
def get_identity(request):
if not request.user.is_authenticated():
raise Http404
return HttpResponse(json.dumps({'identity':request.user.id}), mimetype="application/json")
Backbone.js方。
updateUser:function(){
var $self=this;
$.ajaxSetup({async:false});
$.get(
'/get_identity',
function(response){
// update model...
$self.user.id =response.identity;
//check user every five minutes...
$self.user.fetch({success: function() {
$self.user.set('is_authenticated',true);
setTimeout($self.updateUser, 1000*60*1);
}
},this);
}).fail(function(){
//clear model
$self.user.clear().set($self.user.defaults);
setTimeout($self.updateUser, 1000*60*1);
});
$.ajaxSetup({async:true});
}
答案 0 :(得分:3)
我的base.html中有var is_authenticated = {{request.user.is_authenticated}};
并使用全局变量进行检查。
我正在寻求更好的解决方案(因为当你开始缓存时会中断) 但你可能会发现它很有用。