如何在Django和Backbone.js中检查用户是否正确身份验证

如何在Django和Backbone.js中检查用户是否正确身份验证,django,authentication,backbone.js,Django,Authentication,Backbone.js,我想使用Backbone.js和Django构建单页应用程序 用于检查用户是否经过身份验证 我在django端编写了一个方法get_identity。 如果request.user.is\u authenticated为true,则返回request.user.id,否则返回Http404 在主干端,我定义了一个用户模型,并定期进行ajax调用以获取_标识 我认为这是检查用户是否经过身份验证的最直接的方法 对于学习单页应用程序,如果可能的话,我想用比这种方法更明智、更高效的方法来完成这个操作 那

我想使用Backbone.js和Django构建单页应用程序

用于检查用户是否经过身份验证

我在django端编写了一个方法get_identity。 如果request.user.is\u authenticated为true,则返回request.user.id,否则返回Http404

在主干端,我定义了一个用户模型,并定期进行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});
        }

我有
var is_authenticated={{request.user.is_authenticated}在my base.html中

并使用全局变量进行检查

我正在寻求更好的解决方案(因为当您开始缓存时,这会中断)。

但是您可能会发现它很有用。

{{request.user.is_authenticated}
返回js无法理解的大写True或False。我必须执行
var is_loggedin='{{{request.user.is_authenticated}}'='True'?对:''
try
{{request.user.is|u authenticated | yesno:“true,false”}太好了。谢谢。仍然返回字符串,最好是这样做<代码>var isAuthenticated='{{request.user.is_authenticated}}'=='True'将返回js布尔值。