首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
不愿透露姓名的神秘牛友
09-02 18:01
实习lastday,明天回家考公了
昨天是在团子的lastday,走时ld和hr加了我微信,今天已经踏上了回家的✈️,走时给组里同事们买了奶茶,他们像一个老父亲一样给了我很多建议,问我还能再见吗。一段非常美好的实习经历,就算以后不在互联网,我也非常感激他们的帮助。想到刚去的时候,啥也不懂,说实话人一辈子能靠自己掌握的东西少之又少,实习期间刚好有一个完整的项目给我,赏识的leader,手把手教我操作的同事,都是可遇不可求的。个人唯一能做的也仅仅是当命运之神降临时能够有能力牢牢的把握住机会。再见了👋我的互联网大厂梦,江湖再见吧!
雨忄:
好多在大厂实习完的同学和实验室的,都打算入国企了😣
点赞
评论
收藏
分享
08-30 11:00
门头沟学院 后端工程师
美团后端一面
2min自我介绍15min实习业务介绍及问答Q: RAG和embedding了解吗,是什么有什么作用RAG检索增强生成,可以拓展模型上下文,缓解模型幻觉和时效问题。embedding可以将非结构化数据(文本图片视频)转化为结构化数值向量,向量每个数值代表某个维度上的特征,以此让机器也能理解分类和检索数据。Q: 你是怎么学习大模型的论文、博客Q: 大模型你觉得有哪些可以落地应用的地方AI coding、豆包形式AI应用、行业定制agent和传统互联网业务赋能。 10minQ: 悲观锁和乐观锁概念是否强制加锁,区别于在进入共享资源区之前是否允许其他请求修改共享资源。Q: 消息队列的作用削峰填谷、异...
查看13道真题和解析
点赞
评论
收藏
分享
08-23 21:29
已编辑
吉林师范大学 硬件开发
双非秋招
大佬们,这个简历还有什么问题吗,投了很多家,没有几家回复的,急死了
牛马人的牛马人生:
前期急啥 前期神仙打架高端局ssp的高级大offer 都是佬们的战争
点赞
评论
收藏
分享
09-01 17:40
门头沟学院 前端工程师
猿辅导前端面经
1. 作为前端,你的成长路线是啥样的?2. 聊聊 JS 的单线程模型?3. 为啥 script 脚本跑太久,页面会白屏?4. 怎么优化页面白屏时间太长的问题?5. 如果想搞多线程,该怎么做?6. Web Worker 能干的活,和主线程一样吗?7. 两个线程之间怎么通信?8. JS 引擎是怎么做内存管理和垃圾回收的?9. 怎么在浏览器里观察内存管理的过程?10. AI 前端和普通前端比,需要哪些不一样的特质?11. 了解 Node.js 吗?
查看11道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
秋招邪修秘籍
2.9W
2
...
面试问题--介绍一下你的项目吧--邪修框架
1.3W
3
...
我赌你面试一定被问到过这个问题
7773
4
...
【你问我必答💰】牛客提问季震撼来袭🎉
7197
5
...
找工作,不要死脑筋
5997
6
...
虾皮shopee意向
5507
7
...
美团二面oc面经
5356
8
...
字节 秋招 offer
5145
9
...
字节后端 秋招一二三四面面经(已OC)
5087
10
...
被泡的简历要巨人观了
5013
创作者周榜
更多
正在热议
更多
#
一起聊字节
#
17651次浏览
156人参与
#
好好告别我的学生时代
#
111645次浏览
1474人参与
#
开立医疗秋招
#
25686次浏览
164人参与
#
发面经攒人品
#
116737次浏览
2202人参与
#
机械人值得去的半导体企业
#
23928次浏览
172人参与
#
实习心态崩了
#
36404次浏览
258人参与
#
邪修秋招思路
#
14299次浏览
398人参与
#
秋招有哪些公司要求提前实习
#
7981次浏览
54人参与
#
你遇到过哪些神仙同事
#
108770次浏览
740人参与
#
我的秋招日记
#
288345次浏览
4708人参与
#
招聘要求与实际实习内容不符怎么办
#
122950次浏览
811人参与
#
中兴工作体验
#
31756次浏览
288人参与
#
机械人,你的秋招第一份简历被谁挂了
#
178038次浏览
2165人参与
#
海康威视求职进展
#
88640次浏览
477人参与
#
应届生应该先就业还是先择业
#
134369次浏览
719人参与
#
听到哪句话代表面试稳了OR挂了?
#
40779次浏览
260人参与
#
大城市找工作会更容易吗
#
47008次浏览
359人参与
#
机械人值得去的小众企业
#
19829次浏览
48人参与
#
实习学到最有价值的工作习惯
#
14659次浏览
130人参与
#
你被哪些公司挂了?
#
28306次浏览
184人参与
#
哪些公司一直卡在简历筛选
#
31069次浏览
143人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务