在使用express.js的节点中,我设置了一个基于redis的会话:
// Redis session
const sessionStore = new RedisStore({
client: getRedisClient(),
prefix: 'bl:',
ttl: parseInt(config.sessionTTL, 10),
logErrors: (err) => {
log.error('Redis session error', {
err_message: err.message,
err_stack: err.stack
});
}
});
app.use(session({
secret: config.sessionSecret,
store: sessionStore,
resave: false,
saveUninitialized: false
}));
ttl参数通常设置为30分钟,在结束时会话很好地结束。
我现在需要通知用户何时还有5分钟或更少的会话,但找不到确定何时到达该里程碑的方法。
我(相当天真地)假设剩余的时间量将存储在req.session中,但当我显示时,它通常只显示以下内容:
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
cookieChoiceConfirmationBannerSeen: 'seen',
accessPage: '/decision/application-reference',
appRef: '12345678'
}
我怎样才能知道我的疗程还剩多少时间?我应该使用maxage还是expiry而不是ttl?
==========编辑===========附加信息:getredisclient的代码:
const redis = require('ioredis');
const config = require('../config/config');
let client;
const getRedisClient = () => {
if (!client) {
client = redis.createClient({
host: config.redisHost,
port: config.redisPort
});
}
return client;
};
module.exports = {
getRedisClient
};
1条答案
按热度按时间vs91vp4v1#
您应该能够通过使用相应的键(即您定义的键前缀(默认值))调用redisclient来获取条目本身的ttl
sess
)和会话id。类似的东西应该可以: