express 4.X cookie session

1、cookie

req.cookies.XX 獲取

res.cookie(name,value,{maxAge:0}) //設置cookie

maxAge 用來設置過期時間,單位爲s 也就是秒而不是 ms 毫秒。

清除cookie可以設置值爲undefined 

2、session

req.session  獲取

req.session.XX = 設置session

app.use(session({
  secret: 'keyboard cat',
  resave: true,
  saveUninitialized: true,
  cookie: { maxAge: 1000 * 60 * 1 }// 這裏的單位是ms 毫秒  設置session 存在cookie裏的過期時間
  name:'tkid' //設置cookie 存儲的key 名稱,默認connect.sid 
}));

以上是session的設置,它是不持久的,保存在內存中。當node 服務重啓就沒有了。

當建立鏈接時,會先在本地cookie內寫一個connect.sid。來區別session的身份。直到過期或distroy 清除。

req.session   獲取例子:

cookie:
   { path: '/',
     _expires: 2016-08-26T10:14:16.474Z,
     originalMaxAge: 60000,
     httpOnly: true },
  user: { userid: 1, name: 'star' } }

可以用req.session.user來獲取session存儲的內容。

cookie是 connect.sid 的cookie 設置項。


用req.cookies 獲取例子:

{ 'connect.sid': 's:NY8JMjw_wT_kEy-tcD06XqQByERMkmFX.RpmAVBz4tbcXWHbbtWLH8YgUH6D/3z87rdfUDX+AGJ8',
  user: { userid: 1, name: 'star' } }

req.cookies.user  req.cookie['connect.sid']  獲取值。

用req.session.destroy(); 來清除session

對於 session 它會在cookie裏設置sid來做標識。

一般會把session持久化,放在mongodb 或redis裏,

並設置上過期時間。

這樣在訪問頁面時在沒登錄就不會創建sid,只有在登錄成功後req.session.user=  這時會在本地創建cookie sid 。在redis裏保存信息。

登錄後req.session 和req.cookies 和上邊的類似。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章