【发布时间】:2019-06-10 15:15:35
【问题描述】:
我开发了一个具有安全性和 JWT 的 java spring 服务器。 在开发过程中,我得到了标题中的问题,因为我应该知道认证时的参数值。 除非它,我应该发送 JWT 作为参数。
认证时能否在不影响控制器中获取参数的情况下获取请求参数?
没错,我想比较一下 JWT 负载和一些数据。
【问题讨论】:
我开发了一个具有安全性和 JWT 的 java spring 服务器。 在开发过程中,我得到了标题中的问题,因为我应该知道认证时的参数值。 除非它,我应该发送 JWT 作为参数。
认证时能否在不影响控制器中获取参数的情况下获取请求参数?
没错,我想比较一下 JWT 负载和一些数据。
【问题讨论】:
当然。 Spring Security 是基于标准的 Servlet Filter 设计的,该过滤器由一系列FilterChain 组成,用于处理 HTTP 请求。链中的每个过滤器都负责做特定的事情,例如身份验证、授权、会话管理、CSRF 保护、异常处理等......
因此,这意味着您可以实现过滤器并使用HttpServletRequest API 来获取请求参数以验证 JWT,例如:
httpServletRequest.getHeader("xxxx");
httpServletRequest.getParameter("xxxxx");
【讨论】:
httpServletRequest.getParameter("xxxxx");。但是,它会在控制器中产生错误java.lang.IllegalStateException: getWriter() has already been called for this response。我不想影响我的控制器....
getWriter(),因为我们只调用与请求相关的只读API,不知道为什么它需要处理与“写入”相关的事情......