Spring Security 的默认的AuthenticationEntryPoint 是 LoginUrlAuthenticationEntryPoint。

LoginUrlAuthenticationEntryPoint 用于在用户未经身份验证时重定向到登录页面。它将登录页面的URL作为构造函数的参数,并在重定向时将用户请求的URL作为查询参数附加到登录页面的URL上。

当用户尝试访问受保护的资源时,如果用户未经身份验证,则 AuthenticationEntryPoint 会调用 commence() 方法进行处理。在 commence() 方法中,LoginUrlAuthenticationEntryPoint 会重定向用户到登录页面。

默认情况下,LoginUrlAuthenticationEntryPoint 的构造函数接受一个字符串参数,该参数表示登录页面的URL。例如:

AuthenticationEntryPoint entryPoint = new LoginUrlAuthenticationEntryPoint("/login");

在上述示例中,如果用户未经身份验证尝试访问受保护的资源,则会将用户重定向到 "/login" 页面。

需要注意的是,LoginUrlAuthenticationEntryPoint 仅适用于基于表单的身份验证方式,如果您使用其他份验证方式(例如基于令牌的身份验证),则需要使用其他的 AuthenticationEntryPoint 实现类。 Spring Security OAuth2 默认的权限校验失败 AuthenticationEntryPoint 是 OAuth2AccessDeniedHandler。

OAuth2AccessDeniedHandler 用于在用户尝试访问受保护的资源但权限不足时处理请求。它负责生成适当的响应,以向用户返回权限不足的信息。

当权限校验失败时,OAuth2AccessDeniedHandler 会返回一个 403 禁止访问的响应。

要自定义 OAuth2AccessDeniedHandler,您可以创建一个实现了 AccessDeniedHandler 接口的自定义类,并在 Spring Security 配置中进行配置,例如:

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    // ...

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
            // ...
            .exceptionHandling()
                .accessDeniedHandler(accessDeniedHandler());
    }

    @Bean
    public AccessDeniedHandler accessDeniedHandler() {
        return new MyOAuth2AccessDeniedHandler();
    }
}

上述示例中的 MyOAuth2AccessDeniedHandler 是您自定义的 AccessDeniedHandler 实现类,您可以根据您的需求自定义逻辑。