首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Java三段
西安电子科技大学 Java
发布于陕西
关注
已关注
取消关注
更多面试题,可以定于我的牛客专栏:
https://www.nowcoder.com/creation/manager/columnDetail/0OZ35z
@Java三段:
面试官:说说你项目中JWT的执行流程?
JWT 在目前的项目开发中使用到的频率是非常高的,因此它也是面试常问的一类问题,所以今天我们就来看看“项目中 JWT 的执行流程?”这个问题。1.什么是 JWT?JWT(JSON Web Token) 是一种开放标准(RFC 7519),用于在网络应用间安全传输信息,通常用于身份验证和信息交换。其核心特点是通过紧凑且自包含的 JSON 对象传递数据,无需服务端存储会话状态。2.JWT组成JWT 是由三部分组成的:Header(头部):通常由以下两部分组成:Token 类型:通常是 JWT。加密算法:例如 HS256(HMAC SHA-256)、RS256(RSA SHA-256)等。Payload(载荷) :JWT 的主体部分,通常为以下三类:标准声明(Registered Claims):预定义的字段,如 iss(发行者)、exp (过期时间)、sub(主题)等。公共声明(Public Claims):用户自定义的字段,例如用户 ID、用户名、角色等。私有声明(Private Claims):在特定场景下使用的字段,通常用于内部系统。Signature(签名):用于验证 Token 的完整性和防止篡改。它们之间用点“.”分隔,形成一个字符串(Token)。3.执行流程JWT 执行流程如下:在 Spring Boot 项目中,JWT 的执行流程主要分为以下步骤:1. 用户登录与令牌生成用户通过用户名和密码发起登录请求。服务端验证用户凭证,若验证成功,则使用 JWT 工具类生成令牌:Header:指定算法(如 HS256)和令牌类型(JWT)。Payload:包含用户信息(如用户 ID、角色)和声明(如过期时间 exp)。Signature:使用密钥对 Header 和 Payload 进行签名,确保令牌不可篡改。2. 客户端存储令牌服务端将生成的 JWT 返回给客户端(通常通过响应体或 Header)。客户端(如浏览器或移动端)将令牌存储在本地(如 LocalStorage 或 Cookie)。3. 请求携带令牌客户端在后续请求的 Authorization Header 中以 Bearer 格式携带 JWT。4. 服务端验证令牌拦截器/过滤器:Spring Boot 通过自定义拦截器或 Spring Security 过滤器链拦截请求,提取并验证 JWT:签名验证:使用密钥校验签名是否有效。过期检查:检查 exp 字段是否过期。用户信息提取:解析 Payload 中的用户信息(如用户 ID),用于后续权限控制。5. 授权与响应若验证通过,服务端处理请求并返回数据。若验证失败(如令牌过期或签名错误),返回 401 状态码或自定义错误信息。4.JWT核心实现代码// 生成 JWT(示例)|SECRET_KEY 为服务保存的密钥。public String generateToken(UserDetails user) {return Jwts.builder().setSubject(user.getUsername()).setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)).signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();}// 验证 JWT(示例)public boolean validateToken(String token) { try { Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token); return true; } catch (Exception e) { return false; }}注意事项密钥安全:签名密钥需妥善保管,并定期修改,避免泄露。无状态性:JWT 无需服务端存储会话信息,适合分布式系统。5.JWT 优点分析JWT 相较于传统的基于会话(Session)的认证机制,具有以下优势:无需服务器存储状态:传统的基于会话的认证机制需要服务器在会话中存储用户的状态信息,包括用户的登录状态、权限等。而使用 JWT,服务器无需存储任何会话状态信息,所有的认证和授权信息都包含在 JWT 中,使得系统可以更容易地进行水平扩展。跨域支持:由于 JWT 包含了完整的认证和授权信息,因此可以轻松地在多个域之间进行传递和使用,实现跨域授权。适应微服务架构:在微服务架构中,很多服务是独立部署并且可以横向扩展的,这就需要保证认证和授权的无状态性。使用 JWT 可以满足这种需求,每次请求携带 JWT 即可实现认证和授权。自包含:JWT 包含了认证和授权信息,以及其他自定义的声明,这些信息都被编码在 JWT 中,在服务端解码后使用。JWT 的自包含性减少了对服务端资源的依赖,并提供了统一的安全机制。扩展性:JWT 可以被扩展和定制,可以按照需求添加自定义的声明和数据,灵活性更高。小结JWT 是一种用于身份验证的开放标准,由 Header、Payload、Signature 组成。它的执行流程是:用户登录后生成加密令牌、客户端存储并在请求头携带、服务端验证签名和过期时间后授权。它的优点包括无状态、跨域支持、自包含性,适用于分布式系统和微服务架构,通过签名确保数据安全。课后思考:JWT 过期后会怎样?如何实现自动续期?
点赞 4
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-01 23:23
复旦大学 Java
日常无偿看简历,offer选择
点赞
评论
收藏
分享
昨天 19:23
中南林业科技大学 算法工程师
实习周报不要再写流水账了
调整弹窗位置 => 完善模态交互动效适配不同手机 => 实现响应式布局方案加了个if-else => 完善业务逻辑与分支处理拆了个大函数 => 增强代码可读性加打印日志 => 增强程序可观测行抄组件库 => 参考标准化解决方案用现成SDK => 引入第三方能力百度解决方案 => 调研行业最佳实践抄同事代码=> 与xx对齐,协同开发
我的实习求职记录
点赞
评论
收藏
分享
2025-11-19 18:53
字节跳动_Data-基础架构_前端开发(实习员工)
携程约2面了但是没抢到
难受死了短信发了才20分钟
哈哈哈,你是老六:
我去,这面试还要靠抢啊
点赞
评论
收藏
分享
2025-12-05 18:09
已编辑
广东药科大学 后端工程师
兄弟们走路不要刷牛客😭
手机掉到地铁缝里很正常但是掉里面手机页面还显示牛客页面这就很好玩了
真的很糟糕:
哥们绝对是人才,手机掉了还有心情拍照
点赞
评论
收藏
分享
01-05 20:12
蚌埠坦克学院 嵌入式软件开发
卷加班卷不过你们,只能卷摸鱼了
卷加班这件事,本质上是一场没有终点的消耗战。有人比你更晚走,有人比你更能熬,时间一拉长,输赢早就注定。与其在工位上拼时长,不如承认现实:这条路,卷不过。于是只能换个方向,开始卷摸鱼。不是混日子,而是学会在有限的时间内把事情做到位,用更高的效率完成任务,把多余的加班和表演式努力全部剔除。该学习的时候学习,该干活的时候干活,其余时间尽量不被工作吞噬。摸鱼卷到最后,其实拼的是脑子和边界感。既不内耗自己,也不被无休止的加班文化拖下水。
卷__卷不过你们,只能卷...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度java一面 28届的第一次大厂面试 感觉g了
4724
2
...
拥抱人机共生,锻造不可替代的“金头脑”
3072
3
...
测开劝退
2842
4
...
实习不忙被公司要求下周再来
2793
5
...
双非老鼠的悲惨秋招
2731
6
...
“CRUD”正在消亡吗,2026该何去何从
2648
7
...
塞翁失马,焉知非福
2148
8
...
携程后端实习一面 1h
2087
9
...
今年的目标是实习进大厂
2056
10
...
感谢腾讯云智,!!!2个月后给我机会😭😭
1991
创作者周榜
更多
正在热议
更多
#
26年哪些行业会变好/更差
#
9948次浏览
133人参与
#
卷__卷不过你们,只能卷__了
#
3435次浏览
86人参与
#
去年的flag与今年的小目标
#
4867次浏览
127人参与
#
哪些公司在招寒假实习?
#
4622次浏览
51人参与
#
有深度的简历长什么样?
#
9995次浏览
188人参与
#
你都用AI做什么
#
3830次浏览
96人参与
#
入职第一天
#
6096次浏览
113人参与
#
写论文的崩溃时刻
#
2286次浏览
60人参与
#
你不能接受的企业文化有哪些
#
5166次浏览
87人参与
#
一人分享一道面试手撕题
#
13022次浏览
612人参与
#
央国企投递记录
#
169879次浏览
1632人参与
#
应届生应该先就业还是先择业
#
162298次浏览
822人参与
#
实习,不懂就问
#
147877次浏览
1327人参与
#
你最近一次加班是什么时候?
#
106014次浏览
554人参与
#
一人一道大厂面试题
#
111934次浏览
1252人参与
#
滴滴求职进展汇总
#
292961次浏览
2416人参与
#
帆软软件工作体验
#
8758次浏览
36人参与
#
应届生第一份工作最好去大厂吗?
#
124441次浏览
1111人参与
#
秋招你被哪家公司挂了?
#
1004167次浏览
7722人参与
#
非技术投递记录
#
678199次浏览
6832人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务