Ruby on Rails、Deviseを認証に使用。私は、Deviseがすぐに使える深いリンクを含んでいると理解していますが、ユーザーは最初に認証が必要なURLに移動する必要があります。クエリ文字列パラメータとしてのDevitsログインの戻りURLを指定
このユースケースは私のニーズを満たしておらず、ログイン後にユーザーが現在のページにリダイレクトされるようにクエリ文字列パラメータを指定するオプションがあるかどうかは疑問です。ページは必要ですが、必須ではありません。
Ruby on Rails、Deviseを認証に使用。私は、Deviseがすぐに使える深いリンクを含んでいると理解していますが、ユーザーは最初に認証が必要なURLに移動する必要があります。クエリ文字列パラメータとしてのDevitsログインの戻りURLを指定
このユースケースは私のニーズを満たしておらず、ログイン後にユーザーが現在のページにリダイレクトされるようにクエリ文字列パラメータを指定するオプションがあるかどうかは疑問です。ページは必要ですが、必須ではありません。
お客様のニーズに合わせてDevise::SessionsController
を延長することができます。あなたはsource codeを見れば、工夫をすることに成功記号の後、特定のパスにユーザーをリダイレクトするようにafter_sign_in_path_for
を使用しています。
あなたが持っているリソースは、あなたのroutes.rb
でUser
であると仮定すると、使用すべきルータ工夫指定します:
devise_for :users, controllers: {sessions: 'sessions'}
そしてDevise::SessionsController
から継承app/controllers/sessions_controller
のコントローラを作成し、after_sign_in_path_for
オーバーライド:
class SessionsController < Devise::SessionsController
protected
def after_sign_in_path_for(resource)
params[:redirect_path].presence || stored_location_for(resource)
end
end
新しいセッションフォーム(
app/views/devise/sessions/new.html.erb
)で
は、コントローラにredirect_path
のparamを中継隠されたタグを追加します。
<%= hidden_field_tag :redirect_path, params[:redirect_path].presence %>
今のユーザーの訪問new_user_session_path(redirect_path: some_path)
が、それらは後に所望のパスにリダイレクトする必要がある場合成功したログイン。