spring-mvc - 在自定义 AuthenticationProvider 中访问 HttpServletRequest

标签 spring-mvc spring-security

如何在自定义 AuthenticationProvider 中访问 HttpServletRequest。我试过这样做

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String username = (String) httpReq.getAttribute("j_username");

或者
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest httpReq = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();

String username = (String) httpReq.getAttribute("j_username");

我的用户名为空

但是 RequestContextHolder.getRequestAttributes();返回 null .

我想引用 requestcontext,将其传入,或者让 Spring 发挥它的魔力,以便我可以引用它。

我还在我的 web.xml 中提供了 RequestContextListener
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>

我已经搜索了安全论坛,但仍然没有找到任何东西。

提前致谢。

最佳答案

我刚刚将监听器添加到我的 web.xml 中,RequestContextHolder.getRequestAttributes() 返回 RequestAttributes 而不是 null。

<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

如果要自定义登录表单,为什么不扩展此过滤器: org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

关于spring-mvc - 在自定义 AuthenticationProvider 中访问 HttpServletRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348439/

相关文章:

java - Spring 3.0 MVC Controller 请求映射

javascript - 如何使用 ajax 提交表单并上传文件到 spring Controller ?

java - 如何将所有 memberOf 属性分配给 LDAP 中的特定用户

java - 延迟初始化: failed to lazily initialize a collection

java - 从 Struts 1.2 迁移 -> Struts2 vs Spring-MVC(主要针对 Struts1.2 taglib 支持)

java - Tomcat/Spring 集成返回 404

java - Spring SAML 握手失败 - 无法根据可信 key 验证不受信任的凭证

angularjs - 属性 'finally' 在类型 'Observable<Object>' 上不存在

java - 用于在 Spring MVC 中进行基于注解验证的 bean 单元测试的良好模式

spring-security - 如何为 tomcat SSO 手动测试 kerberos SPI