【发布时间】:2021-06-16 01:26:11
【问题描述】:
我正在使用 angular 和 nodejs。在 Nodejs 中,我使用的是 jwt-simple 库。
如何在用户闲置超过 25 分钟时结束会话并显示消息以确认注销或刷新令牌。
中间件
'use strict'
var jwt = require('jwt-simple');
var moment = require('moment');
var secret = 'clave-secreta-para-generar-el-token-9999';
exports.authenticated = function(req, res, next) {
// Comprobar si llega autorización
if (!req.headers.authorization) {
return res.status(403).send({
message: 'La petición no tiene la cabecera de authorization'
});
}
// Limpiar el token y quitar comillas
var token = req.headers.authorization.replace(/['"]+/g, '');
try {
// Decodificar token
var payload = jwt.decode(token, secret, false, 'HS256');
console.log(payload);
// Comprobar si el token ha expirado
if (payload.exp <= moment(1 * 1).unix()) {
return res.status(404).send({
message: 'El token ha expirado'
});
}
} catch (ex) {
return res.status(404).send({
message: 'El token no es válido'
});
}
// Adjuntar usuario identificado a request
req.useradmin = payload;
// Pasar a la acción
next();
};
服务 jwt
'use strict'
var jwt = require('jwt-simple');
var moment = require('moment');
exports.createToken = function(user) {
var payload = {
sub: user._id,
name: user.name,
surname: user.surname,
email: user.email,
role: user.role,
iat: moment().unix(),
exp: moment().add(2, 'minutes').unix
};
return jwt.encode(payload, 'clave-secreta-para-generar-el-token-9999');
};
令牌永不过期。它始终在 localStorage 中。
【问题讨论】:
-
this 有帮助吗?