解决spring security自定义拦截器addFilterAfter没有执行的原因

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的不同,调用的拦截器就不同

发布了10 篇原创文章 · 获赞 0 · 访问量 242

猜你喜欢

转载自blog.csdn.net/qq_43677987/article/details/103766546