前言

使用Spring Boot开发项目的过程中,难免会遇到向响应头中写入一些信息,例如更新了的token,用户详情等信息。在请求头中添加,请求时就可以通过过滤器,拦截器等验证或者获得请求头传递的信息。但是如果使用@RestController注解,在过滤器、拦截器中修改响应头是无效的。那么怎么解决呢?

解决方式

话不多说,直接上代码,以在响应头中添加token为例

@ControllerAdvice
public class HeaderModifierAdvice implements ResponseBodyAdvice<Object> {@Overridepublic boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {return true;}@Overridepublic Object beforeBodyWrite(Object o,MethodParameter methodParameter,MediaType mediaType,Class<? extends HttpMessageConverter<?>> aClass,ServerHttpRequest serverHttpRequest,ServerHttpResponse serverHttpResponse) {// 转换对象HttpServletRequest request = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();HttpServletResponse response = ((ServletServerHttpResponse) serverHttpResponse).getServletResponse();// 获得tokenString token = JwtTokenUtils.refresh(request);if (StringUtils.isNotBlank(token)) {/*刷新token*/response.addHeader(JwtTokenUtils.TOKEN_KEY, token);}return o;}
}

1、新建一个类,实现ResponseBodyAdvice接口,并且实现beforeBodyWrite方法。
2、在beforeBodyWrite方法中写入自己的添加逻辑。
注意 beforeBodyWrite方法中的HttpServletRequest和HttpServletResponse需要从对应的对象获得。其次supports方法返回值为true即可。

SpringBoot2.3 修改响应头、添加更新token、解决在过滤器中修改失败相关推荐

  1. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...

  2. nginx修改响应头(可屏蔽后端服务器的信息:IIS,PHP等)

    修改nginx反向代理请求的Header 需要使用到proxy_set_header和add_header指令.其中: proxy_set_header 来自内置模块ngx_http_proxy_mo ...

  3. vue3.0 请求拦截对Token处理,导航守卫判断是否登录,响应拦截,觖析token存储到vuex中

    需求:用户点击登录的时候获取token存取下来,然后放入请求拦截,因为用户上拉刷新下拉加载的时候需要用到;不然用户一刷新,服务端都不知道用户是谁了 目录 请求存储token: 请求拦截,及请求错误的响 ...

  4. 【B/S实践】解决:vs中修改样式表后不起作用的问题

    缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...

  5. MySQL中修改表结构的关键字_下列SQL语句中,修改表结构的关键字是

    [单选题]对<将进酒>全诗分析不正确的是 [单选题]下列划线词语的解释有误的一项是 [多选题]下列食品属于不完全蛋白质的是 ( ) . [单选题]下列聚合函数中属性列必须是数值型的是 [单 ...

  6. python修改turtle画笔颜色的函数_以下选项中,修改turtle画笔颜色的函数是() (8.0分)_学小易找答案...

    [单选题]密码学的目的是( ) (6.0分) [单选题]下面代码的输出结果是() for s in "helloworld": if s=="w": conti ...

  7. 解决在开发中修改tomcat的配置文件后,在ecplise启动tomcat后修改的配置文件会自动还原问题

    问题的原因: 原因是在eclipse里集成添加tomcat时,eclipse会自动储存tomcat的配置文件,tomcat服务器在eclipse中启动时,会将自己存储的tomcat配置文件覆盖掉原来t ...

  8. 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效

    之前我们讲到了,如何去把cocos2d-x引擎自带的MoonWarriors例子工程导入源码,然后可以方便学习和编辑. 但是我事后发现,如果修改了js代码后,点击调试,运行时仍然是之前的结果,毫无变化 ...

  9. iOS 解决在Storyboard中修改UITableViewCell背景色无效果的问题

    其实是修改cell的backgroundColor属性,不是contentView的backgroundColor哦~ //设置cell的背景色 - (void)tableView:(UITableV ...

最新文章

  1. python函数中参数前面的*和**的含义
  2. leetcoder reverse polish notation解题笔记
  3. 微信公众平台如何启用开发模式
  4. python立即关机_“python怎么控制计算机关机“python自动关机教程
  5. ASP.NET MVC3中的路由系统 Routes
  6. springboot项目搭建(mybatis + thymeleaf)
  7. java age_这些Java9 超牛的新特性,你竟然还没用过?
  8. 安卓学习pdf_【手机电脑全平台通用】手把手教你制作可点读日语PDF!
  9. 【ESP 保姆级教程】疯狂点灯篇 —— 案例:ESP8266 + LED + 按键 + 阿里云生活物联网平台 + 公有版App + 天猫精灵(项目:我之家)
  10. python自动点击按钮_python实现按钮自动点击
  11. Windows10远程桌面登录——Teamviewer
  12. 局域网内建网站教程,如何零成本搭建自己的网站?
  13. 利用Event实现WinUI层与Bussiness层 跨层间动态提示
  14. 国产芯不知道怎么选?可以试试N32替代STM32
  15. 《小白兔到大黑牛》第十三篇maven中Hadoop中类的练习
  16. 东师计算机基础20春在线作业2,计算机应用基础(高起专)计算机应用基础东师20春在线作业2...
  17. CTF一百题/10之菜狗陈海
  18. 再度公开少林内修心法 易筋经和洗髓经 欢迎转载 让全人类共享学习 过得更健康
  19. BZOJ 2152: 聪聪可可|点分治
  20. CSS Tailwind

热门文章

  1. 机器学习分类指标:精确率、准确率、召回率详解
  2. 【Design pattern】简单工厂过渡策略模式
  3. 联邦学习fate笔记小结
  4. 卷积池化计算 深度学习
  5. vue element的若干问题
  6. TinyML-TVM是如何驯服Tiny的(上)
  7. CVPR2020论文解析:实例分割算法
  8. [JAVA EE] JPA技术基础:完成数据列表显示
  9. HarmonyOS ToastDialog 的使用
  10. HarmonyOS UI开发 StackLayout(堆栈布局) 的使用