没有@PreAuthorize("hasRole('ROLE_xxxx')")
或@Secured("ROLE_xxxx")
批注的Controller方法的默认行为是什么。
哪些角色可以使用这些方法?每个经过身份验证的用户都能调用这些方法吗?
考虑以下情况。
在使用Spring Security的现有应用程序上,我们引入了一种新型的用户角色,即“ ROLE_THIRD_PARTY_CONTRACTOR”,我们希望他们能够登录,但只允许他们访问某些Controller中的某些方法。如何限制那些用户访问不使用@PreAuthorize
或@Secured
批注的方法?
答案 0 :(得分:1)
您可以在到达控制器之前尝试在http级别进行保护。
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**", "/signup", "/about").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
.anyRequest().authenticated()
.and()
// ...
.formLogin();
}
请参阅:https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#jc-httpsecurity