SpringBoot2如何整合JWT框架解决Token跨域验证问题
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下SpringBoot2如何整合JWT框架解决Token跨域验证问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解
千家信息网最后更新 2026年11月03日SpringBoot2如何整合JWT框架解决Token跨域验证问题
小编给大家分享一下SpringBoot2如何整合JWT框架解决Token跨域验证问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、传统Session认证
1、认证过程
1、用户向服务器发送用户名和密码。2、服务器验证后在当前对话(session)保存相关数据。3、服务器向返回sessionId,写入客户端 Cookie。4、客户端每次请求,需要通过 Cookie,将 sessionId 回传服务器。5、服务器收到 sessionId,验证客户端。
2、存在问题
1、session保存在服务端,客户端访问高并发时,服务端压力大。2、扩展性差,服务器集群,就需要 session 数据共享。
二、JWT简介
JWT(全称:JSON Web Token),在基于HTTP通信过程中,进行身份认证。
1、认证流程
1、客户端通过用户名和密码登录服务器;2、服务端对客户端身份进行验证;3、服务器认证以后,生成一个 JSON 对象,发回客户端;4、客户端与服务端通信的时候,都要发回这个 JSON 对象;5、服务端解析该JSON对象,获取用户身份;6、服务端可以不必存储该JSON(Token)对象,身份信息都可以解析出来。
2、JWT结构说明
抓一只鲜活的Token过来。
{ "msg": "验证成功", "code": 200, "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9. eyJzdWIiOiJhZG1pbiIsImlhdCI6iZEIj3fQ. uEJSJagJf1j7A55Wwr1bGsB5YQoAyz5rbFtF"}上面的Token被手动格式化了,实际上是用"."分隔的一个完整的长字符串。
JWT结构
1、头部(header) 声明类型以及加密算法;2、负载(payload) 携带一些用户身份信息;3、签名(signature) 签名信息。
3、JWT使用方式
通常推荐的做法是客户端在 HTTP 请求的头信息Authorization字段里面。
Authorization: Bearer
服务端获取JWT方式
String token = request.getHeader("token");三、与SpringBoot2整合
1、核心依赖文件
io.jsonwebtoken jjwt 0.7.0
2、配置文件
server: port: 7009spring: application: name: ware-jwt-tokenconfig: jwt: # 加密密钥 secret: iwqjhda8232bjgh532[cicada-smile] # token有效时长 expire: 3600 # header 名称 header: token
3、JWT配置代码块
@ConfigurationProperties(prefix = "config.jwt")@Componentpublic class JwtConfig { /* * 根据身份ID标识,生成Token */ public String getToken (String identityId){ Date nowDate = new Date(); //过期时间 Date expireDate = new Date(nowDate.getTime() + expire * 1000); return Jwts.builder() .setHeaderParam("typ", "JWT") .setSubject(identityId) .setIssuedAt(nowDate) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } /* * 获取 Token 中注册信息 */ public Claims getTokenClaim (String token) { try { return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); }catch (Exception e){ e.printStackTrace(); return null; } } /* * Token 是否过期验证 */ public boolean isTokenExpired (Date expirationTime) { return expirationTime.before(new Date()); } private String secret; private long expire; private String header; // 省略 GET 和 SET}四、Token拦截案例
1、配置Token拦截器
@Componentpublic class TokenInterceptor extends HandlerInterceptorAdapter { @Resource private JwtConfig jwtConfig ; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 地址过滤 String uri = request.getRequestURI() ; if (uri.contains("/login")){ return true ; } // Token 验证 String token = request.getHeader(jwtConfig.getHeader()); if(StringUtils.isEmpty(token)){ token = request.getParameter(jwtConfig.getHeader()); } if(StringUtils.isEmpty(token)){ throw new Exception(jwtConfig.getHeader()+ "不能为空"); } Claims claims = jwtConfig.getTokenClaim(token); if(claims == null || jwtConfig.isTokenExpired(claims.getExpiration())){ throw new Exception(jwtConfig.getHeader() + "失效,请重新登录"); } //设置 identityId 用户身份ID request.setAttribute("identityId", claims.getSubject()); return true; }}2、拦截器注册
@Configurationpublic class WebConfig implements WebMvcConfigurer { @Resource private TokenInterceptor tokenInterceptor ; public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(tokenInterceptor).addPathPatterns("/**"); }}3、测试接口代码
@RestControllerpublic class TokenController { @Resource private JwtConfig jwtConfig ; // 拦截器直接放行,返回Token @PostMapping("/login") public Map login (@RequestParam("userName") String userName, @RequestParam("passWord") String passWord){ Map result = new HashMap<>() ; // 省略数据源校验 String token = jwtConfig.getToken(userName+passWord) ; if (!StringUtils.isEmpty(token)) { result.put("token",token) ; } result.put("userName",userName) ; return result ; } // 需要 Token 验证的接口 @PostMapping("/info") public String info (){ return "info" ; }} 以上是"SpringBoot2如何整合JWT框架解决Token跨域验证问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
服务
验证
客户
客户端
服务器
身份
用户
信息
认证
对象
问题
整合
数据
篇文章
拦截器
配置
框架
代码
内容
密码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
百单网互联网科技有限公司
中关村互联网 科技集团
互联网是不是新科技
互联网扶贫科技
丰台科技园 互联网
互联网科技类展会
四个字互联网科技公司取名
互联网科技博主是什么意思
随着互联网科技发展
互联网经济与金融科技
崇明区互联网教育科技售后服务
阿里互联网科技企业
用友工业互联网科技发展
互联网科技如何创业
为客找房互联网科技公司怎么样
宁波跨境商互联网科技有限公司
全球科技与互联网公司市值变化
广西科技产业互联网是什么
互联网科技大会大佬
蓝思科技飞鸽互联网
互联网金融公司科技
期待互联网科技
善班互联网科技
杭州互联网科技公司
顺玮阁互联网科技
青岛科技大学互联网大赛研究生
新兴科技互联网创新大赛颁奖典礼
互联网科技快讯热点
互联网科技职业技能培训学校