0

ユーザーがクリックしてサインインする前にあったページにリダイレクトするために、Devise after_sign_in_path を定義する方法は? 私はapplication_controllerでこれを試しました:

 13   def after_sign_in_path_for(resource_or_scope)
 14     sign_in_url = url_for(:action => 'new', :controller => 'my_sessions', :only_path => false, :protocol => 'http')
 15     if request.referer == sign_in_url
 16       super
 17     else
 18       stored_location_for(resource_or_scope) || request.referer || root_path
 19     end
 20   end

これにより、root_path にのみリダイレクトされます。Sessions calle MySessionsController 用のカスタムコントローラーがあることは言及する価値があります。私は何を間違っていますか?

4

1 に答える 1

2

after_sign_in_path_for(resource_or_scope)これはデフォルトの動作であるため、触れる必要はありません。

リターン パスはsession["user_return_to"](ユーザーがデバイス スコープの場合) に格納され、で設定さstore_location!れます。FailureApp

この失敗アプリは、ウォーデン認証が失敗するたびに呼び出されます: warden config calling を参照してくださいDelegator

どういうわけかこれのいくつかをバイパスすることは可能ですか?

これは、バングなしで監視者認証を行うと発生します。ウォーデンwarden.authenticate!、あなたが呼び出した場合に失敗したアプリを介してのみ保釈します。あなたがデバイスのauthenticate_user!

カスタムのものがある場合は、ここのようafter_sign_in_path_forにセッションコントローラーでリダイレクトの場所として使用してください。

于 2013-02-11T14:45:52.243 に答える