如何防止每次登录更新我的令牌?

时间:2019-02-25 16:38:27

标签: node.js jwt

我已经搜索了一个到期时间,并将其指定为24小时,但是每次我登录令牌都被更改时,我想避免这种情况。 我将其设置为在24小时后过期,但每次登录时始终对其进行更新

    app.post('/json/usuario',function(req,res,next){
    var request= new mssql.Request();
    var dni=req.body.dni;
    var password=req.body.password
    console.log(dni);
    console.log(password);
  var tokenData = {
        dni: dni
        // ANY DATA
      }

      var token = jwt.sign(tokenData, 'Secret Password', {
         expiresIn: 60 * 60 * 24
      })
 var consulta=" SELECT p.dni_Pro,a.fecha_Aso,foto,dbo.InitCap(isnull(p.nombres_Pro,'')+' '+ isnull(p.apellidoPat_Pro,'')+' ' +isnull(p.apellidoMat_Pro,''))as NombreCompleto,dbo.InitCap(a.nombre_Aso) as nombre_Aso,dbo.InitCap(r.nombre_Red) as nombre_Red,'estado'=case p.estado_pro when 'A'then 'Activo' when'P'then 'Pasivo' WHEN'N'THEN'Evaluación' when'F'then'Ex Socio(F)' when'E'then'Ex Socio(E)' when'R'then'EX SOCIO(R)' end,p.sexo_Pro,(select codigo_Cam  from Campana where estado_Cam ='A') campana,p.fechaNac_Pro,contraseña as contra " +
 " from Productor p inner join Asociacion a on a.codigo_Aso=p.codigo_Aso inner join red r on r.codigo_Red=a.codigo_Red where p.dni_Pro='"+dni+"' and codigoIng_Pro is not null "
    request.query(consulta, function(err,result){
        if(err){
            res.send({
                "code":400,
                "failed": err
            })
        }
        else{
            if (result.rowsAffected >0){
                var data={};
                data=result.recordset;
                console.log(data);


                var hash = crypto.createHash('md5').update(password).digest('hex');
                console.log(hash)
                if(data[0].contra.toLowerCase()==hash){
                    res.send({"token":token,result: data, "code":100,
                    "status":"Inicio Exitoso"}); 
                }
                else
                {
                    res.send({
                        "code":200,
                        "status":"Usuario y/o contraseña incorrectos"  
                    });
                }
            }
            else
            {  
                res.send({
                    "code":203,
                    "status":"Usuario No Existe "  
                });
            }
        }
    });
});

我已经搜索了一个到期时间,并将其指定为24小时,但是每次我登录令牌都被更改时,我想避免这种情况。 我将其设置为在24小时后过期,但每次登录时始终对其进行更新

1 个答案:

答案 0 :(得分:0)

在基于令牌的身份验证中,您的登录端点实际上用于检查凭据并颁发令牌,以用于验证对其他受保护端点的访问。

只需缓存登录时发出的令牌(即,如果您的前端{$R-}使用JS),并将其用于受保护的端点。

服务器在请求中返回过期的令牌错误后,您可以提示用户重新登录并保存下一个令牌。

我建议您阅读JWT令牌中的哪些部分,以更好地了解它们的组成。