0

如何在单击登录之前定义设计 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 的自定义控制器,称为 MySessionsController。我究竟做错了什么?

4

1 回答 1

2

您不需要触摸after_sign_in_path_for(resource_or_scope),因为这是默认行为。

返回路径存储在session["user_return_to"](如果用户是您的设计范围),并由store_location!in设置FailureApp

每次守望者身份验证失败时都会调用此失败应用程序:请参阅守望者配置调用Delegator

你有可能以某种方式绕过其中的一些吗?

如果您在没有爆炸声的情况下进行监狱长身份验证,就会发生这种情况。如果你打电话,守望者只会通过失败应用程序保释warden.authenticate!,请参阅守望者维基如果你打电话给 devise'sauthenticate_user!

确保您确实after_sign_in_path_for在会话控制器中用作重定向位置,例如此处,以防您有自定义位置。

于 2013-02-11T14:45:52.243 回答