![](/img/trans.png)
[英]After upgrading to Rails 3.2.2 and Devise 2.0.4, logout does not destroy session
[英]Devise session[:previous url] empty after logout
登錄后,我已使用此方法重定向到當前頁面,並使用Devise退出。 它幾乎總是可以正常工作,但不可行。
注銷后,我也已重定向到登錄頁面。 沒有這種重定向,一切都會正常進行。
不起作用的情況是:當我注銷並再次登錄時 。 在登錄頁面中,我打印session [:previous url],它為空,登錄后將重定向到根路徑·
這種行為對我來說似乎很奇怪...有什么想法嗎?
UPDATE
這是我提到的重定向。 這樣,session [:previous url]在登錄頁面中為空
def after_sign_out_path_for(resource)
login_path
end
這是沒有重定向的工作方式。 這樣,session [:previous url]可以正常工作
def after_sign_out_path_for(resource)
session[:previous_url] || root_path
end
您需要重寫Devise的after_sign_out_path_for
方法以實現此目的。 在您的應用程序控制器中添加此方法
def after_sign_out_path_for(resource_or_scope)
request.referrer
end
我知道這是一個非常老的問題,但是很多人(包括我)仍然有這個問題。
Devise會在注銷過程中重置會話,因此正如RSB所寫,您需要使用request.referrer
將用戶重定向回他們來自的位置。
在您的特定情況下,您可能需要將方法更改為
def after_sign_out_path_for(resource_or_scope)
session[:previous_url] = request.referrer
redirect_to login_path
end
但是,期望應用程序記住用戶注銷並重新登錄時的位置是……非常異乎尋常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.