簡體   English   中英

注銷后設計會話[:上一個URL]為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM