我正在使用express-session
并且有一个辅助函数,我的路由中间件都在调用它,它实际上会检查req.session
对象上的属性,如果不存在则返回 401。
所以我现在有这个:
module.exports.hasAccessToken = function(req, res, next) {
if(req.session.accessToken){
next();
} else {
res.status(401).send();
}
};
我connect-mongo
用作我的商店,登录时我正在添加一个accessToken
属性以req.session
使用从 OAuth 提供程序返回的值。
如果我控制台注销登录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 是否已经过期。express-session
我想知道我是否可以以某种方式使用浏览器 cookie 集合,但是由于使用了 httpOnly ,我将无法访问由生成的那个。
所以我最终想做的是在响应正文中添加一些额外的信息,其中res.status(401).send();
包含某种原因代码来说明为什么发送 401,例如“SESSION_EXPIRED”,但我首先需要找出一种知道的方法用户之前是否有过期的会话。
这有意义吗,这可以实现吗?
谢谢