我这样配置我的应用程序:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.anonymous().principal("guest").authorities("GUEST_ROLE")
.and()
.authorizeRequests()
.antMatchers("/**").permitAll()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.and()
.formLogin();
}我在"/admin/“中的一个控制器定义为
@PreAuthorize("@securityService.hasPermission('SALEPOINT', #id)")但是,如果用户不是“管理员”,但我的securityService.hasPermission是可以的,这是允许的。实际上,我希望检查hasAuthority(“管理”)。
发布于 2021-09-05 13:05:54
从配置中删除.antMatchers("/admin/**").hasAuthority("ADMIN"),因为它已被注释@PreAuthorize覆盖
然后在@PreAuthorize注释中添加以下逻辑,方法是
@PreAuthorize("hasAuthority('ADMIN') AND @securityService.hasPermission('SALEPOINT', #id)")https://stackoverflow.com/questions/69063372
复制相似问题