本文主要是介绍Nestjs-JWT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JSON Web Token
- 使用对称或非对称算法对数据进行加密,生成token返回客户端,客户端请求时将token发送给服务端,服务端对token进行校验解密。
- 构成:
headers+payload+signtuare
例如如下token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.eyJ1c2VybmFtZSI6InpodWFuZyIsInBhc3N3b3JkIjoiMTIzNDU2IiwiaWF0IjoxNzA5NjAwODg2LCJleHAiOjE3MDk2MDI2ODZ9
.odLJNs9MFca7sqfFQn12QOF3jcG3X-mpWQ7S-zIWm44
header:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
是对{"alg":"HS256","typ":"JWT"}
的base64编码。
payload: 同样也是经过base64编码
signature:对payload进行加密生成的签名。
如果客户端篡改了token,那么服务端使用同样的密钥(secret一般是对称解密HS256的密钥,publicKey是非对称解密RS256的公钥,privateKey是私钥,一般默认是对称解密secret)解密会失败,验证失效。
由于payload部分是可以通过base64解码的,所以payload不要存敏感信息,这里password只是举例子。
服务端解密token之后返回的payload会带上
3. 签发时的配置
const payload = this.jwtService.sign({username:'zhuang',password:"123456",
},{secret:'xxxxx',signOptions:{secret:"xxx",expiresIn: '30m',// 对应解密后的payload里的expsubject:"token",issuer:"zhuang",audience:'audience',notBefore:"7d",jwtid:""}
})
这篇关于Nestjs-JWT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!