一、原因
controller层使用了restful开发风格,使用了@RestController 或者 @RequsetBody注解。该注解会在controller层方法执行完后,对response进行编写和最终提交,导致在posthandle和afterCompletion拦截中无法操作修改response中cookie。
二、解决
实现ResponseBodyAdvice接口
![在这里插入图片描述](https://img-blog.csdnimg.cn/2711a97fef3f4116955914bc37adb1e5.png)
重写beforeBodyWrite方法,在controller层中方法执行完之后,response提交之前执行,在这里完成cookie的自动续期,然后添加到response中,最后返回body即可。
![在这里插入图片描述](https://img-blog.csdnimg.cn/836d9490682e4949aa285633855c9824.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/33cb150b0d5c47f89e2b018febf482fa.png)