Spring 设置response header问题
-
记录
始于验证token刷新,这里token检测通过Filter来实现,token刷新原本也是在filter中实现,但是测试时发现返回的response中并没有token,百度过后,大致的意思时,请求对应的方法执行在prehander之后,在posthander之前,因此token的设置并没有生效,这个问题应该跟@responseBody有关,网上的方法是实现responseBodyAdvice的beforeBodyWrite方法在里面进行response header的添加,大致就是这样的一个问题。
-
我的解决方式
基于项目的原因,项目本身跨域处理用的也是filter,优先级在token验证的filter之上,所以我是直接在跨域filter中直接添加的,需要注意的是:我用的是shiro+jwt,因为需要在跨域filter中使用token,所以在登录后才会将token放进session中方便跨域filter获取,因此,跨域filter获取session时在登录操作中一定会异常(获取不到SecurityUtils.getSubject()),我的处理方式的捕获异常然后不处理,因为本身这是意料之中的事情,所以不需要处理,登录后的操作中就可以获取到session中的token,然后设置response header token,返回给前端进行token的重置操作。
-
说明
仅为记录BUG解决方法。