spring-security Springboot hasAnyRole允许所有/任何角色

ac1kyiln  于 2022-11-11  发布在  Spring
关注(0)|答案(2)|浏览(199)

我有一个端点,我必须公开给所有角色,任何拥有至少一个角色的人都应该获得对API的访问权限。

@PreAuthorize("hasAnyRole('ADMIN', 'USER')")

现在角色的数量在增加,我必须将所有的新角色添加到API中。有没有什么方法可以公开拥有任何角色的每个人,而不用在这里指定每个角色?我期待这样的结果

@PreAuthorize("hasAnyValidRole()")
c0vxltue

c0vxltue1#

我们可以直接从WebSecurityConfigurerAdapter执行此操作,覆盖protected void configure(HttpSecurity http)方法,而不使用PreAuthorize注解
你可以简单地写

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ApiSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
           http.antMatcher("your end point here").authorizeRequests().anyRequest().authenticated();
    }

}

这将允许任何经过身份验证的用户访问该URL
希望这能有所帮助!

f3temu5u

f3temu5u2#

终于得到了一个相当容易的解决办法。

@PreAuthorize("isAuthenticated()")

相关问题