发布时间:2020-10-15编辑:佚名阅读(2152)
npm install client-sessions
基本用法:
var sessions = require("client-sessions"); app.use(sessions({ cookieName: 'mySession', // cookie名称指定添加到请求对象的密钥名称 secret: 'blargadeeblargblarg', // 一个随机字符串,因为客户端的数据都是不安全的,所以需要进行加密 duration: 24 * 60 * 60 * 1000, // session的过期时间,过期了就必须重新设置,单位毫秒 activeDuration: 1000 * 60 * 5 // 激活时间,比如设置为30分钟,那么只要30分钟内用户有服务器的交互,那么就会被重新激活。 })); app.use(function(req, res, next) { if (req.mySession.seenyou) { res.setHeader('X-Seen-You', 'true'); } else { // 设置属性将自动发送Set Cookie响应 req.mySession.seenyou = true; res.setHeader('X-Seen-You', 'false'); } });
您可以在安装过程中控制更具体的cookie行为:
app.use(sessions({ cookieName: 'mySession', secret: 'blargadeeblargblarg', duration: 24 * 60 * 60 * 1000, cookie: { path: '/api', // cookie将只发送到“/api”下的请求 maxAge: 60000, // cookie的持续时间(毫秒),默认为duration的持续时间 ephemeral: false, // 关闭浏览器时同时关闭cookie httpOnly: true, // 用来保证cookie只能通过http访问,而不能用js来读取 secure: false // 强制使用https } }));
您可以有多个cookie:
app.use(sessions({ cookieName: 'shopping_cart', secret: 'first secret', duration: 7 * 24 * 60 * 60 * 1000// 一周 })); app.use(sessions({ cookieName: 'authenticated', secret: 'first secret', duration: 2 * 60 * 60 * 1000// 2小时 }));
在本例中,有一个2小时的身份验证会话,但是购物车会持续一周。
最后,可以使用requestkey强制在请求对象上访问信息的名称。
var sessions = require("client-sessions"); app.use(sessions({ cookieName: 'mySession', requestKey: 'forcedSessionKey', // requestKey重写添加到请求对象的键名称的cookieName。 secret: 'blargadeeblargblarg', duration: 24 * 60 * 60 * 1000, })); app.use(function(req, res, next) { // requestKey强制通过forcedSessionKey访问会话信息 if (req.forcedSessionKey.seenyou) { res.setHeader('X-Seen-You', 'true'); } next(); });
关键字: nodejs client-sessions
0人
0人
0人
0人