如何在Rails中清空/销毁会话?


Answers:



44

rails中的session是一个哈希对象。因此,任何可用于清除哈希的功能都将适用于会话。

session.clear

或者如果必须销毁特定密钥:

session.delete(key)

在rails 3.2中测试

添加

人们提到的session={}是一个坏主意。关于session.clear,Lobati评论-看起来您最好使用reset_session [比session.clear]好,因为它会进行一些其他的清理工作,而不是session.clear。在内部, reset_session调用session.destroy它本身也会调用clear以及其他一些东西。


与Gdeglin推荐的方法相比,有人对这种方法的优点有任何想法吗?
Peter Berg 2014年

3
当您要保留其他参数但删除一个特定的键值对时,可以使用此选项。
Lavixu 2014年

1
这根本不会重置会话,而是会分配一个局部变量。永远不要使用这种技术来重置会话:session = {}
alexspeller 2014年

4
Rails文档,上一节5.1进入会议建议,如果你想删除脚本插入键/值对(例如:从东西控制器插入)使用reset_session并生成一个新的会话。如果只想重置设置的键/值对,请将这些键设置为nil。
sargas

1
@barlop似乎您最好使用reset_session,因为它会进行其他一些清理工作session.clear。在内部,reset_session调用session.destroy,这本身调用clear,以及一些其他的东西
lobati

6

删除用户的会话

session.delete(:user_id)

小心,您可以从数据库中删除用户记录!
亚瑟

2
@Arthur这不是真的。从会话密钥USER_ID,而不是整个会话:但你只删除
Andión


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.