[英]Jwt authentication on node-js and react -js
我正在研究基于 jwt 身份验证的项目,我想存储在用户登录请求中创建的令牌,但是这个令牌可以很容易地解码,所以我必须在哪里存储这些令牌?
//code to create token and cookie
const createToken=(id)=>{
return jwt.sign({id},secretkey);}
{....some code are written here.....}
const token= createToken(userid);
res.cookie('jwts',token,{httpOnly:true,maxAge:1000*60*60,sameSite:'lax'})
根据您的问题,感觉您的 JWT 流程不清楚。 令牌可以被解码 - 但它只会显示一些有效负载数据和 header - 它不包含任何敏感数据。
Token 的生成和解释:一个 JWT Token 由Header , Payload & Signature组成。
header 是关于令牌本身的元数据。 有效载荷可以被编码在令牌中,即数据,例如用户的ID。 签名是使用 header、有效负载和存储在服务器上的 SECRET 创建的。 这个过程称为签名。 这个“秘密”可以帮助我们验证签名的真实性。
那么,我们如何确保数据不被修改呢?
验证过程在服务器上完成,其中 JWT 的 header、有效负载和机密用于创建测试签名。 此签名与原始签名匹配(已存在于 JWT 内部) - 然后数据没有被修改。 没有秘密 - 没有人可以操纵 JWT。 也就是说,如果签名不匹配,验证将失败。
令牌存储:关于是否将令牌存储在cookies或本地存储中存在一些争论,因为两者都容易受到黑客攻击。
登录流程:
您需要将该令牌与来自客户端的 API 请求一起发送。 我曾经存储在客户端内部存储中,并用于为每个 API 调用发送该令牌。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.