2014-03-27 105 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 

但是期待應用記住用戶是當他們註銷並重新登錄是......很奇特的。