Rails Session I
9 February, 2014
为了理解session,我想像了一个场景:
老年痴呆患者是没有记忆力的,我告诉他我的名字,并热情的和他打招呼。可第二次会话时,他早已忘记我的名字。
HTTP 协议也是如此,没有状态的,多个请求之间毫无关联。
Session的用途
session 是一串 Hash,保存在浏览器的Cookie文件中。
- 把 user id 放到 session 中。
- 每次浏览器发起请求时捎带着cookie信息。
- 服务器获取 session 中的user id
- 服务器根据 user id 把当前用户拎出来。
禁忌
-
不要在session中保存对象。
cookie 只能保存4kB的信息,一个对象就可能把它撑爆了。
-
不要在session中保存重要的数据,因为:
- 用户关闭浏览器或清空cookie后,这些重要的数据会丢失。
- session在客户端保存,用户可以读取这些信息。