在完成身份验证之前获取j_username

时间:2015-05-11 18:38:16

标签: java jsf spring-security

我构建了一个在 " springSecurityFilterChain" 之前运行的过滤器,此过滤器需要j_username用于 doFilter 方法。 不幸的是,在成功验证结束之前,无法使用Principal对象并通过 getName() 获取用户名。
有没有其他方法可以在第一个过滤器中获取 j_username

1 个答案:

答案 0 :(得分:1)

覆盖

 public class ExUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

 @Override
 public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
          final String username = request.getParameter("j_username");

          // delegate your logic
          return super.attemptAuthentication(request, response); 
  } 
}
安全配置中的

< http />

<bean id="exUsernamePasswordAuthFilter" class="..." />

<custom-filter ref="exUsernamePasswordAuthFilter" position="FORM_LOGIN_FILTER"/>

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-custom-filters