首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 13:12
已编辑
安徽大学 嵌入式软件开发
工科女学嵌入式的心路历程
作为对嵌入式一窍不通的工科女小白,我踏入这个领域的第一步,满是手足无措与自我怀疑。起初连芯片引脚图都认不全,写的代码常因一个语法错误报错半天,硬件焊接更是手抖到连锡都粘不牢,好几次焊坏电路板后,看着桌上散落的零件偷偷掉眼泪。身边大多是基础扎实的男同学,他们讨论的协议、电路原理,我常常要课后翻遍资料才能勉强跟上,这种“落后于人”的落差感,让我不止一次想过放弃。为了跟上进度,我把实验室当成第二个家,别人休息时我啃 datasheet、补电路知识,熬夜调试代码成了常态,有时为了搞定一个电机驱动问题,连续三天只睡四五个小时。好不容易积累了些基础,求职季的困境又给了我沉重一击。不少企业招聘时,会下意识质...
点赞
评论
收藏
分享
01-04 16:40
上海智元新创技术有限公司_产品经理(准入职员工)
智元机器人内推,智元机器人内推码
来到智元快一个月了,更新一下实习体验 1.地理位置:智元上海总部在康桥,离上海迪士尼很近,但是属于郊区,到外滩坐地铁要一个小时 2.周围物价:公司楼下的商务区饭菜是上海水准,平均一餐25左右,牛肉面28。但是!距离500m左右的秀沿路上有大大小小几十家餐馆,木桶饭,张亮麻辣烫,灌汤包,麦当劳,塔斯丁,鸡公煲,烧烤店,好吃的不要太多!而且物价很便宜,和重庆类似,平均一餐15—20,团购的至尊烤鸡才19元,赚麻了 3.租房:(更新)康桥区的租房真的有点乱,我被骗了2000,当时是贝壳上找到的房源,到了现场说他是房东,拿出了他自己搞的虚假合同,里面有2000的一年的物业费,可以退,我微信转账给了他。...
三奇智元机器人科技有限公司公司福利 74人发布
点赞
评论
收藏
分享
01-07 12:22
西安电子科技大学 Java
字节跳动部门区别
请问有朋友知道这两个部门的区别吗?哪一个转正率更高,哪一个面试强度更大呀?
点赞
评论
收藏
分享
01-05 10:03
门头沟学院 后端工程师
真叫我说中了,暑期真开了
vivo好像也开了,字节是真开了,其他的这个月也会开始开的吧
等闲_:
小红书基本不区分日常和暑期,你是应届实习时间够了就有转正机会,只要部门有hc
点赞
评论
收藏
分享
01-07 17:10
腾讯_TEG_技术
欢迎加入支付宝背后的集团!
https://hrrecommend.antgroup.com/job-list.html?code=izvjdvfUWmr_N871Rj1q%2FA%3D%3D
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非非科班2年时间的转码历程
4.0W
2
...
简历挂麻了?因为你的简历只有“宽度”没有“深度”!
1.1W
3
...
入职第一天:允许自己像个新生
8838
4
...
26秋招小结 含面经碎碎念版
5190
5
...
师门闯关记①:好学姐我听你的,就选你说的那个导师了
4139
6
...
百度java一面 28届的第一次大厂面试 感觉g了
3947
7
...
实习不忙被公司要求下周再来
3758
8
...
嵌入式学习路线分享
3549
9
...
“CRUD”正在消亡吗,2026该何去何从
2972
10
...
双非老鼠的悲惨秋招
2954
创作者周榜
更多
正在热议
更多
#
26年哪些行业会变好/更差
#
13616次浏览
179人参与
#
卷__卷不过你们,只能卷__了
#
6870次浏览
160人参与
#
MiniMax求职进展汇总
#
235次浏览
4人参与
#
去年的flag与今年的小目标
#
6561次浏览
155人参与
#
哪些公司在招寒假实习?
#
7125次浏览
84人参与
#
有深度的简历长什么样?
#
12487次浏览
263人参与
#
机械人的秋招小目标
#
25809次浏览
226人参与
#
现在前端的就业环境真的很差吗
#
488093次浏览
5884人参与
#
写论文的崩溃时刻
#
3449次浏览
100人参与
#
入职第一天
#
7648次浏览
149人参与
#
你不能接受的企业文化有哪些
#
7308次浏览
123人参与
#
央国企投递记录
#
170091次浏览
1633人参与
#
腾讯音乐求职进展汇总
#
146996次浏览
1042人参与
#
你都用AI做什么
#
4780次浏览
112人参与
#
实习教会我的事
#
48563次浏览
359人参与
#
一人分享一道面试手撕题
#
16510次浏览
671人参与
#
秋招白月光
#
645724次浏览
5011人参与
#
一人一道大厂面试题
#
112047次浏览
1253人参与
#
应届生应该先就业还是先择业
#
163356次浏览
828人参与
#
实习,不懂就问
#
148596次浏览
1337人参与
#
新凯来求职进展汇总
#
67110次浏览
174人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务