Backbone.jsフロントエンドを備えたシンプルなrails3.2アプリがあります。before_filter
バックエンドで次のヘルパーを定義しています。
# my before_filter placed in most controllers
def require_user
unless logged_in?
redirect_to '/#login'
end
end
def logged_in?
!!current_user
end
def current_user
@_current_user ||= session[:user_id] && Appuser.find_by_id(session[:user_id])
end
これは、ほとんどのアクションへのアクセスをログインユーザーに制限するのに最適です。<script>
ただし、メインのアプリケーションテンプレート(haml)の下部にタグを付けてBackbone.jsコレクションにデータをブートストラップしています。
!!!
%html{:lang => "en"}
%head
%title InfoUser
= stylesheet_link_tag "application", :media => "all"
= javascript_include_tag "application"
= csrf_meta_tags
%script
$(document).ready(function(){ App.init(); });
%body
-# Layout markup
:javascript
projects.reset(#{Project.all.to_json})
groups.reset(#{Group.all.to_json})
users.reset(#{User.all.to_json})
= render "layouts/templates"
問題は、認証されていないユーザーがアプリにアクセスしてすぐにログインページにリダイレクトされた場合でも、このブートストラップスクリプトがページの下部に追加され、すべてのデータがコレクションに表示されることです。
ユーザーのステータスをチェックする方法はhamlにありますか、それともユーザーが認証されるまで待機するブートストラップを処理する別の方法がありますか?