すべてのセッション情報をデータベースに保存します。ユーザーは何かをするためにシステムにログインできます。ユーザーログインが必要な制限エリアがいくつかあります。ユーザーがログイン前にこれらの領域に到達しようとすると、システムはユーザーをログイン ページにリダイレクトします。
ログアウトせずにブラウザを閉じる場合があります。これが発生すると、次にログインしようとしたときに、ユーザーが正しいユーザー名とパスワードを入力したとしても、システムは新しく生成されたセッションを認識できません。その後、システムはユーザーのログインを再度強制します。
誰でもこれを修正する方法を知っていますか? reset_session
ログインページをロードする前に、セッションをリセットしようとしました。問題を修正できません。
セッションコントローラー
def new
end
def create
session[:current_account] = Account.authenticate(params[:email], params[:password])
if session[:current_account]
redirect_to :controller => "xxxxx", :action => "index"
else
flash[:notice] = "Please try again."
render :action => 'new'
end
end
アカウント モデル
def self.authenticate(email, pass)
account = find_by_email(email)
account && account.authenticated?(pass) ? account : nil
end
def authenticated?(pass)
encrypted_password == Account.encrypt(pass,salt)
end
Xxxxx コントローラー
before_filter :permission_handling
def index
end
アプリケーションコントローラー
def permission_handling
unless logged_in?
forced_login
end
end
def logged_in?
session[:current_account].is_a?(Account)
end
def forced_login
flash[:notice] = "You haven't login yet!"
redirect_to ( :controller => "sessions", :action => "new" )
end
皆さんありがとう。:)