2011-06-29 126 views
22

使用Devise將用戶重定向到當前登錄的頁面後,最佳做法是什麼?註銷後重定向設計

devise docs說覆蓋以下(在你的應用程序控制器):

def after_sign_out_path_for(resource_or_scope) 
    # logic here 
end 

這是很容易做到。不過,我設置了前一頁就是一個會話變量,就像這樣:

session[:return_to] = request.fullpath 

的問題是,當你退出,會話被銷燬,並在會話被破壞發生前的方法,這意味着你不再能夠訪問它。我正在考慮把它放在一個類變量或類似的東西里,但是想看看它的想法。

+0

也許嘗試設置flash中的return_to路徑而不是會話,例如, flash [:return_to] –

+0

有趣的想法 - 我很樂意創建一個類變量,但目前還不清楚方法執行順序是什麼,並且文檔不起作用。 – aronchick

回答

33

如果您始終使用單擊註銷鏈接的頁面,則可以使用請求上的引用鏈接。

def after_sign_out_path_for(resource_or_scope) 
    request.referrer 
end 
+0

有趣的是,我完全忽略了這一點,因爲我必須在正面進行各種工作,以確保它們不在登錄頁面上,但我認爲這很有效! – aronchick

+0

今天有這個相同的問題,並修復它,謝謝! –

+0

太棒了。確切地說,我一直在努力嘗試多年。謝謝你的回答! –