2

Backbone.js と Django を使用してシングル ページ アプリケーションを構築したいと考えています。

ユーザーが認証されているかどうかを確認するには、

django 側にメソッド get_identity メソッドを書きました。request.user.is_authenticated が true の場合は request.user.id を返し、それ以外の場合は Http404 を返します

バックボーン側では、User モデルを定義し、定期的に get_identity への ajax 呼び出しを行います。

ユーザーが認証されているかどうかを確認する最も簡単な方法だと思います。

シングルページアプリケーションを学習する上で、できればこの操作をより合理的かつ効率的に行いたいと考えています。

それで、これについてあなたのアドバイスは何ですか?Django+Backbone.js + User Authentication を検索すると、満足のいく結果が見つかりませんでした。この単純な操作をどのように行っているのか、本当に疑問に思います。

任意のヘルプやアイデアをいただければ幸いです。

(ちなみに、定期的に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});
        }
4

1 に答える 1

6

私はvar is_authenticated = {{request.user.is_authenticated}};base.htmlに持っていました

グローバル変数を使用して確認しました。

私はより良い解決策を追求しています(キャッシュを開始するとこれが壊れるため)。
しかし、あなたはそれが便利だと思うかもしれません。

于 2015-02-22T04:02:26.963 に答える