10 months ago

&&參考特别推荐!!!捷姆斯——Rails中的 session 與 cookie

什麼是 session

舉個簡單的例子

我去買雞排,結帳後老闆給我一張號碼牌
等到炸好後在用號碼牌來領雞排

session 就是那張號碼牌,由那家雞排店的老闆發給你,記得這個雞排是誰的

在Rails中,每個新的使用者進入到網站,且需要用到session時,會自動產生一組給該使用者

識別方法:利用亂數產生32byte的數字(16進制)欄位id

這個id會在seesion產生時,也順便存在Client端的cookie中,供以後使用

除了識別欄位,session還允許你存入你想要存的資料

不過由於大小有限,儲存資料越簡單越小越好

以下列出使用session建議

可以存入的資料:數字、字串
不可以存入的資料:Object
關鍵性資料建議不要儲存
經常變動的資料建議不要存

什麼是 cookie

剛剛的 session 是你每次去雞排店,都會拿到新的一張號碼牌

而cookie就是那間雞排店發給你一張會員卡,記錄你的個人相關資訊

既然會員卡放在使用者身上

使用者可以自行丟掉(自行刪除cookie)
到期日到了自動失效(cookie過期會不能使用)
也就是說,我把一些不重要的資訊,存在使用者的電腦中
下次使用者進來,我可以很快的知道他的喜好

它的儲存空間為 4kb

為什麼要用 session 跟 cookie?

我們要先知道 HTTP 是 一個 stateless(無狀態) 的 protocol

什麼意思?

沒有session,伺服器就不能識別,誰正在使用我的網站

那為什麼要用cookie?

使用者跟伺服器沒有一直保持連線的狀況,所以在Cline操作的時候
可以將資料存在cookie,需要連線時在一起將資料送給server

可以想成,跟店家拿菜單,自己畫好要吃什麼後,在送給店家處理

就是伺服器不想要記住所有人的個人化資訊,你提供給我即可

Rails 內如何操作 session?

指定:session[:cart_id] = cart.id
讀取:session[:cart_id]
刪除:session[:cart_id] = nil
清空:reset_session

← blank helper_method →
 
comments powered by Disqus