在上一篇我们分析到了 OAuth2LoginAuthentiationWebFilter 会拦截匹配成功的请求路径。哪些请求路径会被拦截、如何去自定义要拦截的请求路径。这两个问题将是今天的主题。
初始化ServerWebExchageMatcher
在 ServerHttpSecurity 类的内部类 OAuth2LoginSpec 的 configure() 方法内,OAuth2LoginAuthenticationWebFilter 初始化了 ServerWebExchangeMather。如果我们没有指定 ServerWebExchangeMather,就创建默认的;否则使用指定的。大概创建流程如下源码所示。
protected void configure(ServerHttpSecurity http) {
// 省略其他配置
AuthenticationWebFilter authenticationFilter = new OAuth2LoginAuthenticationWebFilter(manager, authorizedClientRepository);
authenticationFilter.setRequiresAuthenticationMatcher(this.getAuthenticationMatcher());
}
private ServerWebExchangeMatcher getAuthenticationMatcher() {
// 如果没有指定自己配置的,使用默认
if (this.authenticationMatcher == null) {
this.authenticationMatcher = this.createAttemptAuthenticationRequestMatcher();
}
return this.authenticationMatcher;
}
private ServerWebExchangeMatcher createAttemptAuthenticationRequestMatcher() {
return new