2015-07-08 3 views
3

Я немного смущен, почему кто-то использует метод @PreAuthorize("denyAll") для метода. Согласно документации безопасности весной, она всегда оценивает значение false. Если мы не будем разрешать доступ к определенному методу, то в чем смысл такого метода. Почему бы не прокомментировать это? Или он все еще может быть доступен из одного класса? Я пытаюсь понять, по какому сценарию такое требование возникнет. Благодарю.Когда мы используем denyAll весной безопасности

+1

Результат применения этих аннотаций полезен для экземпляра прокси-уровня компонента (когда другие bean-компоненты называют компонент с помощью аннотированного метода), но вы все равно можете использовать этот метод внутри одного и того же компонента не по экземпляру прокси, возможно, вы можете использовать эту комбинацию, если хотите использовать метод только внутренне. –

+0

есть ли какая-либо документация, где я могу получить более подробную информацию? Не могли бы вы привести пример, когда кто-то хотел бы иметь такую ​​конфигурацию безопасности – Zack

ответ

1

Одно маленькое уточнение, что я нашел в целом за все отрицать было

@DenyAll аннотаций можно использовать для ограничения доступа бизнес-интерфейса от любого, авторизованы или нет. Этот метод все еще может быть вызван из самого класса компонента.

Таким образом, он может использоваться для метода, который по какой-либо причине является публичным или был подвергнут воздействию (возможно, он реализует интерфейс), но никогда не должен вызываться непосредственно извне. Однако они могут быть вызваны изнутри (внутри класса).

вот link

Один реальный пример, который я могу дать вам (что вполне связаны с моей работой). У нас есть 2 бизнес-единицы с одинаковой базой кода. Теперь в одном блоке есть функция, когда какой-либо мобильный посредник может напрямую вызвать услугу, которая отменяет ваучер непосредственно на стороне оператора, а в другом блоке нам нужно блокировать это из-за какого-то бизнес-правила. Поскольку мы используем один и тот же интерфейс в обеих системах, поэтому в одной системе мы заблокировали его использование, используя denyall

Надеюсь, это даст вам четкую идею.

Смежные вопросы