在会话中存储登录前的最后一个网站URL

时间:2013-04-22 21:54:19

标签: ruby-on-rails devise

我想将用户重定向到他登录前访问过的最后一个网址。

我该怎么做?

我尝试了什么:

在我的应用程序控制器中添加了before_filter:

before_filter :store_location

def store_location
    session[:user_return_to] = request.fullpath
end 

但之后我也有过这个:

  def after_sign_in_path_for(resource)
    me_path
  end

我努力了解这些如何协同工作。

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

查看Devise Wiki上的这篇文章:

在您的情况下,我认为像这样定义after_sign_in_path_for可以正常工作:

def after_sign_in_path_for(resource)
  session[:user_return_to] || me_path
end

此外,过滤掉/users这样的路径会更安全:

def store_location
  session[:user_return_to] = request.fullpath || unless request.fullpath =~ /\/users/
end

由于此方法也是在用户注销时触发的,在这种情况下,您显然不希望将它们重定向回/ users页面。