Я пытаюсь настроить аннотацию безопасности метода с помощью @Secured («ADMIN») (без какого-либо XML, только java config, Spring Boot) , Но доступ через роли не работает.Spring Security, метод Аннотации безопасности (@Secured) не работает (java config)
Security Config:
@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")
Maybe Я забыл указать, что хочу ограничить роли?
UPD: По правилам, на какой слой должен быть @PreAuthorize("hasRole('ADMIN')")
в слое контроллера или в слое службы?
Что не работает? Разве браузеры не пытаются вас аутентифицировать? Не игнорирует ли эти полномочия учетные данные? Кстати: вы также должны опубликовать, где вы привязываете своего пользователя к группе администратора, возможно, это проблемная область. – Marged
Аутентификация работает правильно, но любой пользователь с любой ролью имеет доступ к «/ api/groups» – silverhawk
Где вы устанавливаете ROLE 'ADMIN', можете ли вы показать мне это? –