我有一个菜鸟问题。我想要设计重定向到用户访问的最后一个页面。所以我做了以下...
def after_sign_in_path_for(resource)
request.referer
end
效果很好...除非用户实际上通过原始表单登录,这会导致重定向循环。
I tried
def after_sign_in_path_for(resource)
if (request.referer == "/users/sign_in")
:pages_home
else
request.referer
end
end
但这不起作用,很可能是因为我不知道 request.referer 在遇到原始用户登录页面(www.example.com/users/sign_in)时实际返回什么。
有任何想法吗?
太棒了;使用 devise,我想重定向到从(即 /blog/4)登录的页面,除非该页面是 /users/sign_in
SOLVED:
马丘说得对。 request.referer 也返回了域名......
http://example.com/users/sign_in
(注意:没有www前缀)
如果这是一种不安全或低效的方式,我仍然对 request.referer 的替代方案感兴趣。
不要重定向到引荐来源网址——这通常是一个坏主意。
相反,传递一个next
查询字符串或表单数据中的值。也许使用类似的东西:
def after_sign_in_path_for(resource)
params[:next] || super
end
当用户尝试访问需要身份验证的页面时(例如,/admin/posts/3/edit
) 认证before_filter
问题一个redirect_to new_session_url(:next => request.path)
。然后编写登录操作和视图以保留:next
查询字符串参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)