JWT 的工作原理

JWT 的工作原理

用户通过用户名和密码等凭据进行身份验证。
服务器验证用户的凭据,生成 JWT,并将其返回给用户。JWT 通过 Base64Url 编码而成。
用户存储 JWT,通常存储在浏览器的 localStorage 或 sessionStorage 中。
用户在每次请求时将 JWT 发送到服务器,通常通过 HTTP 请求的 Authorization 头部。
服务器接收到 JWT 后验证其签名与内容。如果有效,服务器执行该请求;如果无效,返回相应的错误信息。

JWT 的优势

无状态:JWT 以自包含的方式存储用户信息,服务器不需要存储用户会话信息,适合分布式系统。
跨域支持:由于 JWT 是基于标准的字符串格式,可以轻松支持跨域请求。
灵活性:可以在 Token 中存储自定义数据,不仅限于身份验证相关的信息。
安全性:通过签名算法保证数据的完整性,避免被篡改。

JWT 的缺点

不可撤销性:JWT 一旦生成,无法简单地撤销,除非设计了 Token 刷新机制。
过期管理:需要合理设置过期时间,过长会带来安全隐患,过短则可能影响用户体验。
隐私问题:JWT 中的信息是Base64Url编码的,并未加密,因此敏感信息不应直接放在 Token 中。

常见用例
#牛客AI配图神器#
用户身份验证:用户登录成功后,会话管理通过发放 JWT 实现。
API 访问控制:保护 API 端点,确保只有持有有效 Token 的用户才能访问。
单点登录(SSO):多个系统之间共享 JWT,实现单点登录。
全部评论

相关推荐

05-18 10:14
河南大学 Java
全程40分钟手撕二选一:1、给定一个字符串,找出包含给定字符集的最小窗口,如:字符串:"it's tuesday",字符集:"std",最小窗口就是"tuesd"2、奇偶线程交替执行,消费者线程模式我选了第一题,滑动窗口1、项目有多少行代码,项目带来了什么样的成长,遇到了什么问题吗,技术上遇到了什么难题;项目用多少压力去测试的,有没有性能热点;2、项目中线程池用在哪里,怎么去定线程池的参数,多少个线程之类;设置的线程数对其他模块有没有什么影响3、对cpu饱和有了解吗4、项目中有没有用到反射机制,用到了哪些设计模式;对常见的设计模式有用过吗,有了解吗5、多线程并发的逻辑问题如何解决6、分布式锁的优点和缺点7、linux熟不熟,开发过shell脚本吗,主要是用shell脚本做了什么;涉不涉及到批量处理文件,截取字段8、linux查性能瓶颈的命令,查内存的命令,查磁盘的繁忙程度的命令9、mysql窗口函数有了解吗10、优化数据库查询性能11、SQL题:学生表,属性有id、name、yuwen_grade、math_grade、english_grade、all_grade(总成绩)。取总成绩第三名的 学生id(可能会有并列的情况,并列的情况,所有第三名都要查出来)  。  如果把all_grade去掉,查总成绩第三的学生。12、DDL了解哪些语句,列排序,列类型变更有了解吗,是unlearn DDL 还是 open DDL(这个地方没太听清楚这两个英文单词是什么,没听说过这个概念)13、有系统性学过python感觉被拷打了,回答的有点糟糕5.12面的,到现在还没有消息,应该是挂了#牛客AI配图神器#
蚂蚁集团一面244人在聊 查看18道真题和解析
点赞 评论 收藏
分享
05-18 11:01
河南大学 Java
全程50分钟,无手撕1、项目中redis主要用于做什么的;redis string的sds介绍一下2、redis实现排行榜怎么做,zset实现榜单会出现什么样的问题(需要排序的数据非常多)  (这一点没有回答好)3、大key处理,拆分的依据是什么4、redis集群;哨兵主要是做什么;如何判断一个节点什么时候该下线5、mysql用的什么版本;聚集索引和非聚集索引的区别6、索引创建原则;索引失效的场景7、表锁、行锁和页锁分别适用于什么场景,有什么区别;这三个锁哪一个更容易出现;出现死锁该如何解决8、mysql隔离级别;RR和RC的readview创建有什么区别;为什么有的公司选择RC而不是RR9、mysql主从延迟如何处理(这一点没有回答好)10、spring bean生命周期;bean创建过程中可能出现哪些问题;详细介绍一下三级缓存;使用两级缓存能解决循环依赖的问题吗(这一点没有回答好)11、netty线程模型,工作原理;IO多路复用的核心原理12、有哪些类组件底层使用了红黑树;hashmap什么时候会变成红黑树;为什么要用红黑树;13、kafka怎么实现高吞吐量;如何保证消息消费的有序性;kafka多副本同步机制ISR介绍一下(这点忘了)14、分布式锁;java的锁有哪些;ReentrantLock底层实现;synchronized和ReentrantLock的使用要注意什么15、java垃圾回收有哪些;G1和CMS有什么区别;CMS使用了哪个垃圾回收算法,有什么问题吗;G1是怎么分代的16、线程池核心参数;CPU密集型和IO密集型的核心线程数怎么设置;实际中线程数的设置 应该从哪些角度考虑17、threadlocal结构是什么样的;能避免并发问题吗,能代替锁吗18、ES有了解吗,介绍一下ES的分片(这个不会)19、分库分表20、分布式任务系统的调度该如何实现;介绍一下时间轮的工作原理21、两个用户的共同好友,A用户的好友数是亿级别的,这时候应该怎么做22、涉及一下秒杀场景,如何保证高并发;如何避免库存超卖(这点答的不好)23、常见限流算法;令牌桶和漏桶的使用场景24、RPC框架介绍一下;dubbo有用过吗(没用过);注册中心可以使用哪些;nacos和zookeeper有什么区别(这点回答的不好);zookeeper为什么是CP的,nacos为什么是AP的(这点也回答的不好)25、有没有排查过线上的问题;很多线程处于close_wait的状态,这时候该如何处理,什么时候线程会处于这个状态(这个不会)26、介绍一下LRU算法的思路这个还蛮想去的,但是挂了。工资好像也挺高的#牛客AI配图神器#
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务