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});
}