Например, если я ограничиваю разрешение на удаление, это также влияет на deleteById, deleteInBatch, deleteAll?
Насколько я знаю: нет. Проверьте этот пример кода, где поиск разрешен, но удаление строго ограничено только администраторами:
public interface RecordRepository<T extends Record> extends MongoRepository<T, String> {
// paginated queries
@RestResource(path = "names", rel = "name")
public Page<T> findByName(@Param("name") String name, Pageable pageable);
@RestResource(path = "types", rel = "types")
public Page<T> findByTypeIn(@Param("type") List<String> types, Pageable pageable);
// restrict delete operations to administrators only
@PreAuthorize("hasRole('ADMIN')")
@Override
void deleteById(String id);
@PreAuthorize("hasRole('ADMIN')")
@Override
void delete(T entity);
@PreAuthorize("hasRole('ADMIN')")
@Override
void deleteAll(Iterable<? extends T> records);
@PreAuthorize("hasRole('ADMIN')")
@Override
void deleteAll();
}
При этом, если ваша цель состоит в том, чтобы ограничить удаление только администраторами, вы можете расширить WebSecurityConfigurerAdapter и настройте его для блокировки всех запросов http DELETE:
public class WebSecurityBaseConfiguration extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.DELETE).hasRole("ADMIN");
}
}
Обратите внимание, что это быстрое и грязное копирование, которое может не работать из коробки (вам, вероятно, потребуется настроить Ролевая иерархия ).