「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战」。
一、什么是JWT
JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.
—[摘自官网]
1 | markdown复制代码# 1.翻译 |
二、JWT能做什么
1 | markdown复制代码# 1.授权 |
三、为什么是JWT
3.1、基于传统的Session认证
1 | markdown复制代码# 1.认证方式 |
1 | markdown复制代码# 3.暴露问题 |
3.2、基于JWT认证
1 | markdown复制代码# 1.认证流程 |
四、JWT的结构是什么?
1 | markdown复制代码token string ====> header.payload.singnature |
1 | markdown复制代码# 2.Header |
1 | json复制代码{ |
1 | markdown复制代码# 3.Payload |
1 | json复制代码{ |
1 | markdown复制代码# 4.Signature |
1 | markdown复制代码# 5.放在一起 |
五、使用JWT
1 | markdown复制代码# 1.引入依赖 |
1 | xml复制代码<!--引入jwt--> |
1 | markdown复制代码# 2.生成token |
1 | java复制代码Calendar instance = Calendar.getInstance(); |
1 | markdown复制代码- 生成结果 |
1 | markdown复制代码# 3.根据令牌和签名解析数据 |
1 | java复制代码JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("token!Q2W#E$RW")).build(); |
1 | markdown复制代码# 4.常见异常信息 |
六、封装工具类
1 | java复制代码public class JWTUtils { |
七、整合springboot
1 | markdown复制代码# 0.搭建springboot+mybatis+jwt环境 |
1 | xml复制代码<!--引入jwt--> |
1 | properties复制代码server.port=8989 |
1 | markdown复制代码# 1.开发数据库 |
1 | sql复制代码DROP TABLE IF EXISTS `user`; |
1 | markdown复制代码# 2.开发entity |
1 | java复制代码@Data |
1 | markdown复制代码# 3.开发DAO接口和mapper.xml |
1 | java复制代码@Mapper |
1 | xml复制代码<mapper namespace="com.dao.UserDAO"> |
1 | markdown复制代码# 4.开发Service 接口以及实现类 |
1 | java复制代码public interface UserService { |
1 | java复制代码@Service |
1 | markdown复制代码# 5.开发controller |
1 | java复制代码@RestController |
1 | markdown复制代码# 6.数据库添加测试数据启动项目 |
1 | markdown复制代码# 7.通过postman模拟登录失败 |
1 | markdown复制代码# 8.通过postman模拟登录成功 |
1 | markdown复制代码# 9.编写测试接口 |
1 | java复制代码@PostMapping("/test/test") |
1 | markdown复制代码# 10.通过postman请求接口 |
1 | markdown复制代码# 11.问题? |
1 | java复制代码@Override |
1 | java复制代码@Component |
本文转载自: 掘金