【问题标题】:how to end an user session token and refresh the token with the time is more than 25 minutes in angular如何结束用户会话令牌并刷新令牌,时间超过 25 分钟
【发布时间】: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 有帮助吗?

标签: node.js angular jwt


【解决方案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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2015-09-09
    • 1970-01-01
    • 2019-07-01
    • 2016-09-23
    • 2019-04-07
    • 1970-01-01
    • 2020-07-12
    相关资源
    最近更新 更多