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 和上边的类似。