Я начал работать над существующим приложением весенней загрузки с защитой весны. У нас есть ресурсы, авторизованные для использования с аннотацией @PreAuthorize
. Теперь у меня есть новый вариант использования, в котором мне нужно применить авторизацию при обновлении коллекции в рамках ресурса
Я имею в виду. Пользователь, вошедший в систему, может иметь разрешения на обновление сущности, но у него может не быть доступа к обновлению коллекции внутри сущности
Я прочитал, что, включив безопасность глобального метода, я могу добавить аннотацию авторизации для любого метода, поэтому я попытался поместить его в метод, который выполняет обновление коллекции. Но это не сработало
Могу ли я действительно использовать эту аннотацию где-нибудь или она должна использоваться только для методов, связанных с контроллером?
Я думаю, вопрос в том, обрабатывается ли эта аннотация как фильтр на запрос или это АОП?
Я использую его следующим образом:
@Value
private class FooDto {
int id;
String property1;
Collection<Bar> bars;
}
@PreAuthorize("#id, 'FOO_RESOURCE:WRITE'")
public FooDto update(int id, FooDto dto) {
Foo foo = fooRepository.findBy(id);
updateBars(dto.getBars(), foo.getBars());
return updatedEntityDto;
}
@PreAuthorize("#id, 'BARS:WRITE'")
private void updateBars(Collection<Bar> dtoBars, Collection<Bar> entityBars) {
// update the collection
}