【问题标题】:How to send simple information in headers如何在标头中发送简单信息
【发布时间】:2020-05-23 05:32:45
【问题描述】:

我创建了一个函数来创建会话到期日期,如下所示:

    @Override
    public Long sessionTime() throws ErrorException{
        Long expirySession = System.currentTimeMillis() + expirationTime;
        return expirySession;
    }

她在每次请求后启动并将这段时间保存在数据库中,

但我必须在控制器中的请求的所有标头中发送这个时间,

谁能告诉我该怎么做?

【问题讨论】:

    标签: java spring spring-boot session


    【解决方案1】:

    您可以使用响应实体标头

    @GetMapping("/response-entity")
    public ResponseEntity<String> usingResponseEntityBuilderAndHttpHeaders() {
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.set("sessionTime" ,sessionTime());
        return ResponseEntity.ok()
          .headers(responseHeaders)
          .body("ResponseEntity");
    }
    

    更多详情请查看https://www.baeldung.com/spring-response-header

    【讨论】:

    • 好的,但我不想在我的 50 个控制器中都实现这个,我需要一个全局解决方案
    • 我可以在我的sessionTime() 函数中使用这个(不带return)吗?
    • @piotrek 你可以扩展OncePerRequestFilter techiedelight.com/…
    【解决方案2】:

    您可以在过滤器中执行此操作,以便在一个地方为该功能提供通用处理程序。

    https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/package-summary.html

    你需要这样实现doFilter方法:

    public class Example implements Filter {
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            response .addHeader("header_name", "header_value");
            filterChain.doFilter(servletRequest, response);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2018-06-08
      • 2010-09-11
      • 2018-03-01
      • 2012-10-10
      • 1970-01-01
      相关资源
      最近更新 更多