当前位置: 首页 > news >正文

SpringBoot+JWT

一、maven坐标

<!-- JWT依赖 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.4.0</version></dependency>

二、配置项
在application.yml文件中添加

config:jwt:# 加密密钥secret: 自己生成# token有效时长,单位秒expire: 3600

三、配置文件

/*** JWT的token,区分大小写*/
@ConfigurationProperties(prefix = "config.jwt")
@Component
@Setter
@Getter
public class JwtConfig {private String secret;private long expire;/*** 生成token* * @param subject* @return*/public String createToken(String subject) {Date nowDate = new Date();Date expireDate = new Date(nowDate.getTime() + expire * 1000);// 过期时间return Jwts.builder().setHeaderParam("typ", "JWT").setSubject(subject).setIssuedAt(nowDate).setExpiration(expireDate).signWith(SignatureAlgorithm.HS512, secret).compact();}/*** 获取token中注册信息* * @param token* @return*/public Claims getTokenClaim(String token) {try {return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();} catch (SignatureException e) {e.printStackTrace();throw new 自定义异常类("非法请求");} catch (ExpiredJwtException e) {e.printStackTrace();throw new 自定义异常类("登录已过期");} catch (Exception e) {e.printStackTrace();throw e;}}/*** 获取subject*/public String getSubjectFromToken(String token) {return getTokenClaim(token).getSubject();}}

四、使用

//需要的地方注入
@Autowired
private JwtConfig jwtConfig;@ApiOperation("JWT登录")
@GetMapping("loginJWT")
public ResponseBo loginJWT(HttpServletRequest request, String phone) {//返回TOKEN用于其他系统认证,不一定一定要传phone,按自己需求修改String jwtToken = jwtConfig.createToken(phone);return ResponseBo.success().data(jwtToken);
}@ApiOperation("验证")
@GetMapping("getInfo")
public ResponseBo getInfo(HttpServletRequest request){//我这里让前端放入header里面传给我,可以按照需求修改String token = request.getHeader("token");String phone = jwtConfig.getSubjectFromToken(token);return ResponseBo.success().data(phone);
}
http://www.lryc.cn/news/114136.html

相关文章:

  • Cad二次开发EqualPoint
  • 20230806将ASF格式的视频转换为MP4
  • 【MySQL】——常用接口API即相关函数说明
  • ts + axios + useRequest (ahooks)—— 实现请求封装
  • Springboot @Validated注解详细说明
  • STM32初学者,到底选标准库还是HAL库?
  • 小学生作业随机加减乘除运算计算习题答案 html源码
  • nvm下载安装配置
  • 2023-08-07力扣每日一题
  • uni——不规则tab切换(skew)
  • Docker安装Grafana以及Grafana应用
  • OpenSource - 分布式重试平台
  • oracle稳定执行计划
  • docker安装neo4j
  • 第十五章 定义 HL7 的 DTL 数据转换
  • 【笔记】移动光猫改桥接
  • 网络安全进阶学习第十四课——MSSQL注入
  • 【C语言】初阶结构体
  • 24届近5年南京理工大学自动化考研院校分析
  • 5.PyCharm基础使用及快捷键
  • RabbitMQ的安装
  • GPU版PyTorch对应安装教程
  • 医学影像PACS临床信息系统源码
  • Python(Web时代)——jinja2模板
  • 酷开系统 | 酷开科技,让数据变得更有价值!
  • uni——tab切换
  • 类图的6种关系和golang应用
  • Linux tar 备忘清单
  • 76. 最小覆盖子串
  • 科兴未来|2023“数智未来,聚放神采”医疗科技创新挑战赛