Я пытаюсь понять разрешения ресурса уровня метода. Я знаю, что аннотация @EnableGlobalMethodSecurity(prePostEnabled = true)
позволяет определять аннотаты в ``
@PreAuthorize
или @PreAuthorize
с Spring Expression Language для большего контроля над доступом к ресурсу, но, в принципе, я могу достичь этого без @EnableGlobalMethodSecurity
, например,
@GetMapping("/hasscope")
@PreAuthorize("#oauth2.isOAuth() and #oauth2.hasScope('GITHUB') or
#oauth2.hasScope('ROLE')")
public String helloScope(final Principal principal) {
return "This method use preauthorize annotation !";
}
У меня есть доступ к #oauth2
объекту без этой аннотации, и я могу создавать собственные правила выражений, как указано выше.
Я что-то пропустил или не правильно понял. Какая разница между этим или просто игнорированием? В какой форме это улучшает безопасность методов?