Я использую Spring Data REST и у меня есть метод найти в моем хранилище:Spring Security/rolesAllowed/antMatchers
public List<Contact> findByLastNameOrderByLastNameAsc(@Param("lastName") String lastName);
Я пытаюсь добавить безопасность метода, но не повезло. В моей БД у меня есть 1 пользователь с ролью «ROLE_USER». Когда служба запускается, появляется форма входа в систему, и я могу войти с учетными данными в БД.
Вот мой веб-конфигурации безопасности:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select username,identification,enabled from users where username = ?");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/contacts/findByLastNameOrderByLastNameAsc").hasRole("ADMIN")
.antMatchers("/contacts/**").fullyAuthenticated()
.antMatchers("/contacts/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin();
}
При попытке вызова службы в моем хранилище, я не вижу какой-либо ошибки аутентификации. Используя мой браузер, URL-адрес подходит отлично, хотя пользователь в БД не имеет роли «ADMIN».
Я пытался добавить «RolesAllowed» методу в моем хранилище, но не повезло:
@RolesAllowed(value = { "ADMIN" })
public List<Contact> findByLastNameOrderByLastNameAsc(@Param("lastName") String lastName);
не Собираюсь ли я о добавлении безопасности в REST API, предоставленной Spring Data правильно? Идеи о том, как заставить это работать?
благодаря