【项目实践day06】JWT令牌相关

什么是JWT

简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。
由于数字签名的存在,这些信息是可靠的。

  1. jwt就是将原始的json数据格式进行了安全的封装,这样就可以直接基于jwt在通信双方安全的进行信息传输了。
  2. 简洁:是指jwt就是一个简单的字符串。可以在请求参数或者是请求头当中直接传递。
  3. 自包含:指的是jwt令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求在jwt令牌中存储自定义的数据内容。如:可以直接在jwt令牌中存储用户的相关信息

JWT组成

  1. Header(头)
    1. 记录令牌类型、签名算法等。 例如:{“alg”:“HS256”,“type”:“JWT”}
  2. Payload(有效载荷)
    1. 携带一些自定义信息、默认信息等。 例如:{“id”:“1”,“username”:“Tom”}
  3. Signature(签名)
    1. 防止Token被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来

记录令牌类型、签名算法等。 例如:{“alg”:“HS256”,“type”:“JWT”}

应用场景

登录

  1. 浏览器发起请求执行登录操作,如果成功,生成jwt令牌,并将其返回给前端
  2. 前端拿到jwt令牌后,将其存储,后续每次请求都会将JWT令牌携带到服务器
  3. 服务器统一拦截请求后,先判断JWT令牌是否存在且有效,如果是,放行。
    在这里插入图片描述

项目中实现

  1. 导入依赖pom.xml
  2. 生成JWT令牌的接口 与 对token进行解密的方法 JwtUtil.java
  3. 书写jwt令牌校验的拦截器JwtTokenAdminInterceptor.jsva
  4. 将第二步骤 写的 jwt令牌校验的拦截器 放入配置类WebMvcConfiguration
    1. 注册自定义拦截器
    2. 并指定要拦截的请求路径
    3. 以及需要排除哪些请求
  5. 在用户登录的时候需要利用JwtUtil.java为其生成令牌——在负责用户登录的controller中实现

注意:JWT令牌中存储着用户的id信息,如果后续需要的话,可以在校验令牌的时候,将id信息放入LocalThread的封装方法BaseContext,以便后续直接获得当前用户的id

  • 适用于管理员插入某些信息,需要记录一下插入人(管理员)的id等情况
  • baseContext是自己定义的类,里面新建了LocalThread对象,里面只有几个方法:插入当前id,得到当前id

参考链接

用户登录
微信登录

相关推荐

  1. SpringBoot项目使用JWT令牌进行权限校验

    2024-03-19 22:52:09       31 阅读
  2. JWT令牌(Token)设计

    2024-03-19 22:52:09       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-19 22:52:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-19 22:52:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-19 22:52:09       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-19 22:52:09       20 阅读

热门阅读

  1. el-input添加keyup事件无响应

    2024-03-19 22:52:09       18 阅读
  2. 掘根宝典之c++标识符,命名

    2024-03-19 22:52:09       20 阅读
  3. 爬虫基本原理实现以及问题解决

    2024-03-19 22:52:09       21 阅读
  4. 系统架构设计师笔记第37期:数据访问层设计

    2024-03-19 22:52:09       16 阅读
  5. PyTorch学习笔记之基础函数篇(十二)

    2024-03-19 22:52:09       16 阅读
  6. [LLM]大模型八股知识点(一)

    2024-03-19 22:52:09       17 阅读
  7. 常见的几个Python技术难题

    2024-03-19 22:52:09       17 阅读