如何确定用户的会话是否已过期

时间:2016-04-05 08:33:01

标签: node.js session express express-session

我正在使用express-session并且有一个帮助函数,我的路由中间件都在调用,它实际上检查了req.session对象上的属性,如果它已经回复了401。没有。

所以我现在就拥有这个:

module.exports.hasAccessToken = function(req, res, next) {
  if(req.session.accessToken){
    next();
  } else {
    res.status(401).send();
  }
};

我使用connect-mongo作为我的商店,登录时我使用OAuth提供商返回的值向accessToken添加req.session属性。

如果我在登录后控制台注销req.session,我会看到

Session {
  cookie:
   { path: '/',
     _expires: Tue Apr 05 2016 08:58:10 GMT+0100 (GMT Daylight Time),
     originalMaxAge: 3000,
     httpOnly: true },
  accessToken: '<token_value_here>' }

当会话到期并且我的功能正在上面发送401时,我看到

Session {
  cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true } }
当未登录的用户访问应用程序时,

req.session也会对上述内容进行评估。所以我试图找到一种方法让我告诉用户以前是否已登录并且他们的会话cookie已经过期。我想知道我是否能够以某种方式使用浏览器cookie集合,但是自从httpOnly被使用以来我无法访问express-session生成的那个。

所以我最终想要做的是在res.status(401).send();中添加一些额外的信息,并提供一些原因代码来说明为什么要发送401,例如&#39; SESSION_EXPIRED&#39但是,我首先需要找出一种方法来了解用户以前是否有过会后的会话。

这是否有意义,这是否可以实现?

由于

0 个答案:

没有答案