2014-03-27 67 views
1

我已经使用this how-to在登录后重定向回当前页面,使用Devise注销。 它几乎总是在工作,但一个案例不是。注销会话[:上一个url]注销后为空

注销后我也重定向到登录页面。没有这个重定向,一切都正常。

不工作的情况是:当我注销并再次登录。在登录页面打印会话[:上一个网址],它是空的,登录后,它重定向到根路径·

这种行为似乎很奇怪我......任何想法?

UPDATE

这是我所提到的重定向。通过这种方式,会话[:以前的URL]在登录页面

def after_sign_out_path_for(resource) 
    login_path 
end 

空这是它是如何工作没有重定向。通过这种方式,会话[:以前的URL]工作正常

def after_sign_out_path_for(resource) 
    session[:previous_url] || root_path 
end 
+1

您是否在应用程序控制器和'after_filter'中包含了'store_location'? – backpackerhh

+0

我看到了我应该使用before_filter的地方:store_location 如果我使用before_filter:authenticate_user! 我之前使用过after_filter,行为是一样的 –

回答

0

你需要重写设计的方法after_sign_out_path_for实现这一目标。在您的应用程序控制器添加这种方法

def after_sign_out_path_for(resource_or_scope) 
    request.referrer 
end 
+0

看来你没有发现我的问题。我现在进行了测试,并且您的代码具有与没有重定向相同的行为。 –

+0

我用我的代码更新了这个问题。我希望现在更清楚 –

0

我知道这是一个非常古老的问题,但很多人(包括我)还是有这个问题。

设计在注销过程中重置会话,因此RSB写入时,您需要使用request.referrer将用户重定向到它们来自的位置。

在特定情况下,你可能会想方法更改为以下

def after_sign_out_path_for(resource_or_scope) 
    session[:previous_url] = request.referrer 
    redirect_to login_path 
end 

但是期待应用记住用户是当他们注销并重新登录是......很奇特的。