springsecurity
刚自学完springsecurity框架的基础内容,就决定花点时间自己写一个管理类型的项目。图书馆管理系统。。。。。。
为什么要自定义一个拦截器呢?
因为登陆方式有几种,而springsecurity框架只提供一种简单的 用户名密码登陆方式。如果要自己实现一个手机号码,验证码登陆方式,就需要自定义了。
先看看我的登陆界面吧
账户密码登陆
自定义拦截器如下
public class MobilePhoneFilter extends AbstractAuthenticationProcessingFilter{
public static final String SPRING_SECURITY_FORM_MOBILE_KEY = "phoneNumber";
private String matcherParam=SPRING_SECURITY_FORM_MOBILE_KEY;
private boolean postOnly = true;
protected MobilePhoneFilter() {
super(new AntPathRequestMatcher("/mobile/login","POST"));
}
usernamePasswordauthenticFilter如下
public class UsernamePasswordAuthenticationFilter extends
AbstractAuthenticationProcessingFilter {
// ~ Static fields/initializers
// =====================================================================================
public static final String SPRING_SECURITY_FORM_USERNAME_KEY = "username";
public static final String SPRING_SECURITY_FORM_PASSWORD_KEY = "password";
private String usernameParameter = SPRING_SECURITY_FORM_USERNAME_KEY;
private String passwordParameter = SPRING_SECURITY_FORM_PASSWORD_KEY;
private boolean postOnly = true;
// ~ Constructors
// ===================================================================================================
public UsernamePasswordAuthenticationFilter() {
super(new AntPathRequestMatcher("/login", "POST"));
}
我之前把自己的自定义拦截器的构造方法中super(new AntPathRequestMatcher("/login", “POST”));写成与UsernamePasswordAuthenticationFilter的一样。导致自己的自定义拦截器没有执行。问题就在这里。登陆校验url的不同,调用的拦截器就不同。