首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在超过25分钟的时间内结束用户会话令牌并刷新令牌

如何在超过25分钟的时间内结束用户会话令牌并刷新令牌
EN

Stack Overflow用户
提问于 2021-03-18 23:55:10
回答 1查看 28关注 0票数 0

我使用的是angular和nodejs。在Nodejs中,我使用的是jwt-simple库。

如何在用户处于非活动状态超过25分钟时结束会话,并显示消息以确认注销或刷新令牌。

中间件

代码语言:javascript
复制
'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

代码语言:javascript
复制
'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中。

EN

回答 1

Stack Overflow用户

发布于 2021-03-19 04:55:54

你可以试试这样的东西

代码语言:javascript
复制
import { of } from "rxjs";
import { delay } from "rxjs/operators";

const delayInMs = 25 * 60 * 1000;
const alert25minutes$ = of('alert').pipe(delay(delayInMs));
alert25minutes$.subscribe(() => openAlertModal());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66694581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档