nodejs client-sessions

发布时间:2020-10-15 10:19:17.55编辑:佚名阅读(507)

安装client-sessions

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();
});


  关键字:nodejsclient-sessions


鼓掌

0

正能量

0

0

呵呵

0


评论区