我在Spring应用程序中为过滤器链配置了以下配置:
@Configuration
protected static class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.authorizeHttpRequests()
.requestMatchers("/createuser", "/index.html", "/", "/home", "/login", "/*.css", "/*.js", "/favico.ico").permitAll()
.anyRequest().authenticated()
.and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
return http.build();
}
}
我不明白它是如何工作的,我想添加其他的安全约束,例如匹配路径/api/admin/*
,并要求这些请求的角色为ADMIN
。我该怎么做呢?
我见过hasRole(String role)
方法,但我不明白如何在我的情况下使用它?
1条答案
按热度按时间xmd2e60i1#
要向Spring应用程序添加其他安全约束,您可以使用FilterChainProxy指定应应用于传入请求的规则。例如,如果您希望对
/api/admin/*
路径的请求要求ADMIN角色,则可以向FilterChainProxy添加以下配置:在此配置中,antMatchers方法用于指定安全约束应匹配的路径模式。然后,hasRole方法用于指定只允许具有ADMIN角色的用户访问匹配路径。最后,anyRequest方法用于将已验证的约束应用于所有其他请求。这意味着它们必须经过身份验证(但不一定具有特定角色)。
如果要指定用户访问匹配路径所必须具有的特定授权(如权限或特权),也可以使用hasAuthority方法代替hasRole。