假设我有一个只能由经过身份验证的用户访问的端点,
现在我也想向非授权用户授予访问权限。
我是否需要期望
Spring Security
即使在用户尝试访问公共端点时也会尝试授权用户?
我的意思是,我是否能够确定到底谁正在到达公共端点 - 授权用户还是非授权用户?
它100%基于您为Spring Security所做的配置,您可以配置哪些用户可以访问哪些端点。 示例:
public SecurityFilterChain securityFilterChain(HttpSecurity http, UserAuthProvider userAuthProvider) throws Exception {
http
.csrf(AbstractHttpConfigurer::disable)
.addFilterBefore(new JwtAuthFilter(userAuthProvider), BasicAuthenticationFilter.class)
.sessionManagement(customizer -> customizer.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests((requests) ->
requests.requestMatchers(HttpMethod.POST, "/login", "/register").permitAll()
.anyRequest().authenticated());
return http.build();
}
在这种情况下,端点 /login 、 /register 允许未经授权的用户使用, 所有其他端点都需要身份验证。