Spring Security, аннотация безопасности метода (@Secured) не работает (конфигурация java)
Я пытаюсь настроить аннотацию безопасности метода, используя @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);
}
.....
}
Я хочу ограничить доступ к методу контроллера:
@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")
Может быть, я забыл указать, что я хочу ограничить по ролям?
UPD: По правилам, на каком слое должен быть@PreAuthorize("hasRole('ADMIN')")
на уровне контроллера или на уровне службы?