如何在自定义 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/