【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能


       在开发中,获取当前登录用户的功能是一个必须的功能,比如保存创建人、修改人等操作。以前通过session去set和get方法(每个方法的参数列表都需要加上HttpServletRequest request参数)或者类似springsecurity等框架实现获取当前登录人信息。下面我分享一个目前项目上使用的方式。

大致流程如下:

一、ThreadLocal

       线程局部变量,创建一个线程变量后,针对这个变量可以让每个线程拥有自己的变量副本,每个线程是访问的自己的副本,与其他线程的相互独立。

二、HandlerMethodArgumentResolver

       该接口用于预先处理请求参数,他有如下两个方法:

  • supportsParameter: 判断请求参数是否是支持该解析器(返回true表示支持,会继续调用resolveArgument方法,返回false表示不支持,参数解析结束不会继续调用resolveArgument方法)。
  • resolveArgument: 参数解析的具体实现逻辑,最后返回参数具体解析后封装的对象。

三、实战Demo

       1、拦截器

       模拟前端请求携带token,若传1,假设从缓存获取的用户信息是张三,否则是李四。并将用户信息塞入线程变量。

      2、全局用户类

       采用饿汉式单例模式

       3、自定义注解

       用于放在参数列表,判断某接口是否支持自定义参数解析器。

       4、自定义参数解析

       自定义参数解析类,集成HandlerMethodArgumentResolver接口,并重写他的两个方法,此处判断方法参数上是否包含我们的自定义注解,若包含则说明支持该解析器,返回true,进入下面的方法执行。

       重写的resolveArgument方法便将线程变量的值进行返回,返回到该注解对应的参数里面。

       5、配置

       编写配置类,继承WebMvcConfigurer接口,重写添加拦截器和添加参数解析器方法,将自定义的拦截器和解析器加上。

       6、测试

       测试两种方法获取当前登录用户信息。


目录
相关文章
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的电影信息推荐APP的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的电影信息推荐APP的详细设计和实现(源码+lw+部署文档+讲解等)
|
4天前
|
存储 SQL 安全
DVWA Weak Session IDs 通关解析
DVWA Weak Session IDs 通关解析
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的ITS 信息平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的ITS 信息平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的ITS 信息平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的新能源汽车信息咨询服务附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的新能源汽车信息咨询服务附带文章源码部署视频讲解等
10 1
|
7天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校毕业生就业信息系统小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校毕业生就业信息系统小程序附带文章源码部署视频讲解等
11 2
|
7天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的电影信息推荐APP附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的电影信息推荐APP附带文章源码部署视频讲解等
16 1
|
11天前
|
数据库 数据安全/隐私保护
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)
13 2
|
11天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高校知识产权信息服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高校知识产权信息服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
18 1
|
11天前
|
测试技术 Windows
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)(3)
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)
12 1
|
11天前
|
Java 关系型数据库 MySQL
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue保密信息学科平台系统设计与实现(源码+部署说明+演示视频+源码介绍+lw)
12 1

推荐镜像

更多