SpringBoot2.3 修改响应头、添加更新token、解决在过滤器中修改失败
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot2.3 修改响应头、添加更新token、解决在过滤器中修改失败
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
使用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、解决在过滤器中修改失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 树形结构数据生成--不需要顶级
- 下一篇: 使用阿里云服务器安装docker,并用n