Могу ли я использовать аннотацию Spring @PreAuthhorize для любого метода - PullRequest
0 голосов
/ 22 апреля 2020

Я начал работать над существующим приложением весенней загрузки с защитой весны. У нас есть ресурсы, авторизованные для использования с аннотацией @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
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...