Rails 2 アプリを Rails 3 にアップグレードしています。以前は、cookie[:auth_token] を使用してサインインする AuthenticatedSystems を使用していました。
def logged_in?
current_user != :false
end
def current_user
@current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie || :false)
if @current_user != :false && @current_user.logged_in_by_password == true
session[:logged_in_by_password] = true
end
@current_user
end
def login_from_cookie
user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
if user && user.remember_token?
user.remember_me
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at, :http_only => true }
self.current_user = user
end
end
したがって、#create でこれをセッション コントローラーに追加するだけです。
def create
...
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at, :http_only => true }
end
私は現在Deviseを使用していますが、セッションを使用してログインしていると思います。ただし、セッションが存在しない場合はCookieを使用したいです。これは、ユーザーがブラウザーを閉じて再度開いたときに、Rails アプリが自動的にログインする方法を保持できるようにするためです (ショッピング カートにこの機能が必要です)。
cookies[:auth_token] = ...
new に行を追加しようとしましたSesssionsController < Devise::SessionsController
が、Devise がさまざまな方法を試す場所 (セッション、Cookie などを見る) で同じことを行う方法がわかりません。Deviseに似たようなものはありますか?