如何结束用户会话令牌并刷新令牌,时间超过 25 分钟
Posted
技术标签:
【中文标题】如何结束用户会话令牌并刷新令牌,时间超过 25 分钟【英文标题】:how to end an user session token and refresh the token with the time is more than 25 minutes in angular 【发布时间】: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 有帮助吗? 【参考方案1】:你可以试试这样的
import of from "rxjs";
import delay from "rxjs/operators";
const delayInMs = 25 * 60 * 1000;
const alert25minutes$ = of('alert').pipe(delay(delayInMs));
alert25minutes$.subscribe(() => openAlertModal());
【讨论】:
以上是关于如何结束用户会话令牌并刷新令牌,时间超过 25 分钟的主要内容,如果未能解决你的问题,请参考以下文章