好的,似乎很少有'破坏'用户会话的方法,它们之间可能存在细微差别以及应用程序如何处理用户会话。在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