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

ibr*_*maz 2 authentication django backbone.js

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

检查用户是否通过身份验证,

我在 django 端写了一个 get_identity 方法。如果 request.user.is_authenticated 为 true 则返回 request.user.id 否则返回 Http404

在主干端,我定义了一个用户模型并定期对 get_identity 进行 ajax 调用。

我认为这是检查用户是否通过身份验证的最直接的方法。

对于学习单页应用程序,如果可能的话,我希望这样做比这种方式更明智,更高效。

那么您对此有何建议?当我搜索Django+Backbone.js + User Authentication时,我没有找到任何令人满意的结果,我真的很想知道人们是如何进行这种简单的操作的。

任何帮助或想法将不胜感激。

(顺便说一下,我尝试定期读取 cookie,但在客户端无法访问 HttpOnly True 标记的 cookie。)

Django 视图.py

def get_identity(request):
    if not request.user.is_authenticated():
        raise Http404
    return HttpResponse(json.dumps({'identity':request.user.id}), mimetype="application/json")
Run Code Online (Sandbox Code Playgroud)

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});
        }
Run Code Online (Sandbox Code Playgroud)

eug*_*ene 6

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

并使用全局变量进行检查。

我正在寻求更好的解决方案(因为当您开始缓存时这会中断)。
但你可能会发现它很有用。

  • 试试`{{ request.user.is_authenticated|yesno:"true,false" }};` (2认同)