我已经搜索了一个到期时间,并将其指定为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小时后过期,但每次登录时始终对其进行更新
答案 0 :(得分:0)
在基于令牌的身份验证中,您的登录端点实际上用于检查凭据并颁发令牌,以用于验证对其他受保护端点的访问。
只需缓存登录时发出的令牌(即,如果您的前端{$R-}
使用JS),并将其用于受保护的端点。
服务器在请求中返回过期的令牌错误后,您可以提示用户重新登录并保存下一个令牌。
我建议您阅读JWT令牌中的哪些部分,以更好地了解它们的组成。