JWT 简单的原理介绍
JWT(Json Web Token)是一种身份验证及授权方案,简单的说就是调用端调用 api 时,附带上一个由 api 端颁发的 token,以此来验证调用者的授权信息。
通过一种加密规则(如 HS256)+ secret 生成一串字符串(token),token 字符串中一般含有过期时间和签名信息,根据签名和过期时间,就可以判断当前 token 是否有效。
// newToken是根据 'jwt_secret' 生成的, jws.verify用于校验当前token是否是根据当前secret生成的
console.log(jws.verify(newToken, 'HS256', 'jwt_secret')); // true
console.log(jws.verify(newToken, 'HS256', '-=-=-=')); // false
无论使用哪个 secret 生成的 token,都是可以解析到 payload 的内容的,仅仅只是签名不同,
payload 的常见内容:
{
uuid: "3455445-acuya7skeasd-iue7", // token的有效内容
phone: 133409899625, // token的有效内容
expires: 1591066434678, // token的过期时间
},[signature]
根据 expires 判断 token 是否过期,根据 signature 判断当前 token 是否时本人创建,根据这两点就可以判断 token 是否有效了。