好的,似乎很少有'破壞'用戶會話的方法,它們之間可能存在細微差別以及應用程序如何處理用戶會話。在Rails中銷燬用戶會話的簡潔方法
首先,爲什麼大多數示例不使用session.delete(:current_user_id)
來刪除:current_user_id
值(及其散列鍵!)?一個典型的例子如下圖所示(我添加了刪除:return_to
,因爲如果退出,爲什麼需要跟蹤return_to值)。
def sign_out
self.current_user = nil
session[:current_user_id] = nil
session.delete(:return_to)
end
如果應用需要刪除所有的會話變量和值,是不是更安全簡單地使用session = nil
或session.destroy
?這將完全破壞散列。如果您的應用程序支持...跟蹤匿名用戶,那麼在會話哈希中保留current_user_id
是有意義的!!?!
想法?
謝謝@konole - 這是有道理的,從一個異常的角度...兩個想法也許值得更新的答案1)我可以簡單地使用'self.current_user = session [:current_user_id] = nil'和2)'session.delete(:return_to)'真的屬於執行重定向的方法......如果您同意,您可以更新嗎? ? – user1322092 2014-09-21 15:50:50
是的,你可以。儘管多任務會影響分配並使其更難讀。你甚至可以將更多的分配給零(C風格ftw),儘管人們更喜歡逐行獲取它們。 ;) 關於session.delete(:return_to) - 它包含了什麼? – konole 2014-09-21 15:53:55
好吧,我看到你關於多任務的點,所以讓我們保持這種方式。 ':return_to'是認證之後重定向用戶的頁面。''redirect_to(session [:return_to] || default)' – user1322092 2014-09-21 15:57:53