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