2017-05-09 2 views
1

最も近い方法は、after_database_authenticationメソッドをオーバーライドするためにdeviseモデルUserをフックすることです。パスワードを入力するかクッキーを使ってrails/deviseのログインを区別する方法?

しかし、そのモデル方法では、ルートルートを処理するコントローラにフラグを送信できませんでした。 (どういうわけか、current_userはatr_accessor対応のパラメータに到達できませんでした)。

パスワードを提供することによって作成された場合、またはCookieによって作成された場合、最も重要な手段は何ですか?

答えて

3

レールMVCモデルでは、モデルはセッションを認識しません。したがって、ユーザーモデルは、サインインされたユーザーがいるかどうかを知る必要がありません。あなたは、ユーザーがセッションに値を設定できるルート・パス上の他のヒット対に符号からリダイレクトされた場合と区別したい場合は

# routes.rb 
devise_for :users, controllers: { sessions: 'sessions' } 

# app/controllers/sessions_controller.rb 
class SessionsController < Devise::SessionsController 
    def create 
    super do 
     session[:just_signed_in] = true 
    end 
    end 
end 

# this would be whatever controller you have that handles the route path 
class HomeController 
    after_action :cleanup! 

    def index 
     if session[:just_signed_in] 
     # ... 
     else 
     # ... 
     end 
    end 

    private 

    def cleanup! 
    session.delete(:just_signed_in) 
    end 
end 

これを行うための別の方法を追加することですクエリのパラメータはredirect path after sign inです。

+0

ありがとうございます。感謝。 –

関連する問題