0

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に似たようなものはありますか?

4

1 に答える 1

0

Devise はsessionハッシュを使用して、Warden のサポートを通じて認証情報を保存します。ただし、セッション情報は通常 cookie に保存されるため、ユーザーのセッションの永続性を探している場合は、それについて心配する必要はありません。

于 2013-09-10T20:29:44.513 に答える