Nestjs-JWT

JSON Web Token

  1. 使用对称或非对称算法对数据进行加密,生成token返回客户端,客户端请求时将token发送给服务端,服务端对token进行校验解密。
  2. 构成: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里的exp
      subject:"token",
      issuer:"zhuang",
      audience:'audience',
      notBefore:"7d",
      jwtid:""
	}
})

在这里插入图片描述

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值