我使用的是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中。
发布于 2021-03-19 04:55:54
你可以试试这样的东西
import { of } from "rxjs";
import { delay } from "rxjs/operators";
const delayInMs = 25 * 60 * 1000;
const alert25minutes$ = of('alert').pipe(delay(delayInMs));
alert25minutes$.subscribe(() => openAlertModal());https://stackoverflow.com/questions/66694581
复制相似问题