Есть ли способ получить доступ к ролям, указанным в @Secured?

1

Мы используем Spring Security для защиты наших методов контроллера. Скажем, у меня есть контроллер, который позволяет мне редактировать Foo.

@Controller
@Secured({"FOO_ADMINISTRATOR"})
public class FooEditorController {
...
}

Теперь мне нужно добавить меню в свой пользовательский интерфейс, который позволит пользователю получить доступ к редактору Foo. Но я хочу только представить этот параметр меню пользователям с правом доступа к FooEditorController. Кроме того, я хотел бы сохранить информацию в одном месте, если это возможно. То есть, когда я указываю, что параметр меню для редактора Foo ограничен теми, у кого есть роль FOO_ADMINISTRATOR, я хотел бы просто запросить FooEditorController и спросить его, какие роли требуются. Таким образом, эта информация определяется в одном месте.

(Я пытался создавать массивы ролей и использовать их в обоих местах, но аннотация @Secured не позволяет этого. @Secured требует инициализатора массива.)

Или, может быть, есть намного лучший способ решить эту проблему?

Теги:
spring-security
spring
spring-mvc

1 ответ

1
Лучший ответ

Если вы хотите получить доступ к ролям, указанным в аннотации @Secured (или значениям, указанным в любой аннотации, если на то пошло), вы можете использовать отражение для достижения этого:

String[] roles = FooEditorController.class.getAnnotation(Secured.class).value();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню