spring-security 当使用Spring Security oAuth2登录时,如何为某个URL返回401

uubf1zoe  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(131)

我正在尝试使用Spring Security oAuth2来保护我的应用程序。如果用户没有登录,是否有办法在其他页面转到登录页面时,对某些URL返回401?
例如,为/ui/* 返回登录表单,为/api/* 返回401
我试着用了两个SecurityWebFilterChain,但都没成功。

b09cbbtk

b09cbbtk1#

您可以将Spring Security配置为使用自定义的AuthenticationEntryPoint,如下所示:

http
    // ... your configuration
    .exceptionHandling((ex) -> ex
        .defaultAuthenticationEntryPointFor(new LoginUrlAuthenticationEntryPoint("/login"), new AntPathRequestMatcher("/ui/**"))
        .defaultAuthenticationEntryPointFor(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED), new AntPathRequestMatcher("/api/**"))
    );

这样,SpringSecurity将基于RequestMatcher#matches方法获取AuthenticationEntryPoint

相关问题