2020-11-22 基于JWT做用户登录验证 Spring boot2.0 + mybatis

本文介绍了如何基于JWT实现用户登录验证,涉及Spring Boot 2.0和Mybatis的环境搭建,JWT的构成解析,以及JWTUtil工具类的创建。前端使用Vue框架,通过axios发送请求,并处理登录成功后的cookie验证和跨域问题。文章还详述了登录验证的测试结果,包括不同场景下的响应。
摘要由CSDN通过智能技术生成

说明

JWT的构成

下面是生成token的一段源代码

    private String sign() throws SignatureGenerationException {
   
        String header = Base64.encodeBase64URLSafeString(this.headerJson.getBytes(StandardCharsets.UTF_8));
        String payload = Base64.encodeBase64URLSafeString(this.payloadJson.getBytes(StandardCharsets.UTF_8));
        byte[] signatureBytes = this.algorithm.sign(header.getBytes(StandardCharsets.UTF_8), payload.getBytes(StandardCharsets.UTF_8));
        String signature = Base64.encodeBase64URLSafeString(signatureBytes);
        return String.format("%s.%s.%s", header, payload, signature);
    }

从源码可以知道JWT由三个部分组成,header, payload, signature。构建token的大概过程如下:
1.对header进行base64url转码加密放在第一部分;header默认是传入以下json字符集:

{
   
  typ: JWT,
  alg: HS256, #加密算法id
  kid:keyId, withKeyId
}

2.对payload进行base64url转码加密放在第二部分;payload json字符集中的默认key如下,可以调用JWTCreator.Builder的方法向字符集传值:

{
   
  iss:Issuer,发行者 withIssuer
  sub:Subject,主题 withSubject
  aud:Audience,   withAudience
  exp:Expiration time,过期时间 withExpiresAt
  nbf:Not before       withNotBefore
  iat:Issued at,发行时间  withIssuedAt
  jti:JWT ID   withJWTId
  # 其他key value可以用withClaim方法传入
}

3.把一个secret 放进加密后的header.payload再进行加密放在第三部分,这个secret由服务器保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值