如何在点击登录之前定义设计post_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 callse MySessionsController的自定义控制器。我做错了什么?
答案 0 :(得分:2)
您不需要触摸after_sign_in_path_for(resource_or_scope)
,因为这是默认行为。
返回路径存储在session["user_return_to"]
中(如果用户是您的设计范围),并由store_location!
in FailureApp
每次看守认证失败时都会调用此失败应用:请参阅warden config来电Delegator
。
你有可能以某种方式绕过其中一些吗?
如果你在没有爆炸的情况下进行监督认证,就会发生这种情况。如果您致电warden.authenticate!
,warden仅通过失败应用程序保释,请参见warden wiki确实发生if you call devise's authenticate_user!
请确保您在会话控制器like here中使用after_sign_in_path_for
作为重定向位置,以防您拥有自定义控件。