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 和上邊的類似。