gpt4 book ai didi

java - Spring Security,方法安全注释(@Secured)不起作用(java config)

转载 作者:IT老高 更新时间:2023-10-28 13:53:14 25 4
gpt4 key购买 nike

我正在尝试使用 @Secured("ADMIN") 设置方法安全注释(没有任何 XML,只有 java 配置,Spring Boot)。但是通过角色访问不起作用。

安全配置:

@Configuration
@EnableWebSecurity
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter{

.....

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").fullyAuthenticated().and()
.addFilterBefore(tokenAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}

.....

}

我想限制对 Controller 方法的访问:

@RestController
@RequestMapping("/api/groups")
public class GroupController {

@Autowired
private GroupService groupService;

@Secured("ADMIN")
@RequestMapping
public List<Group> list() {
return groupService.findAll();
}

}

通过 url 限制访问有效,使用:

.antMatchers("/api/**").hasAuthority("ADMIN")

也许我忘了指定我要按角色进行限制?

统一更新:按照规则,@PreAuthorize("hasRole('ADMIN')")必须在Controller层还是Service层的哪一层?

最佳答案

欢迎添加

@EnableGlobalMethodSecurity(securedEnabled = true)

此元素用于在您的应用程序中启用基于注释的安全性(通过在元素上设置适当的属性),并将安全切入点声明组合在一起,这些声明将应用于您的整个应用程序上下文,专门用于 @安全。因此你的代码应该是这样的

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter{..

关于java - Spring Security,方法安全注释(@Secured)不起作用(java config),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com