如何在自定义AuthenticationProvider中访问HttpServletRequest。我试过这个
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String username = (String) httpReq.getAttribute("j_username");
OR
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest httpReq = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
String username = (String) httpReq.getAttribute("j_username");
我的用户名为null
但是RequestContextHolder.getRequestAttributes();返回null。
我想引用requestcontext,传入它,或让Spring做它的魔术,所以我可以引用它。
我也在我的web.xml中提供RequestContextListener
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
我搜索了安全论坛,但还没找到任何内容。
提前致谢。
答案 0 :(得分:9)
我刚刚将侦听器添加到我的web.xml中,而RequestContextHolder.getRequestAttributes()返回RequestAttributes而不是null。
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
如果您想自定义登录表单,为什么不扩展此过滤器:org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
答案 1 :(得分:-3)
使用request.getParameter(&#34; j_username&#34;);而不是request.getAttribute(&#34; j_username&#34;);
它对我有用。看看它是否对你有帮助。