@RolesAllowed, @Deny Все использование на веб-уровне?

Я просматриваю раздел спецификации Java EE 6 EE.6.25, в котором указано, что веб-контейнеры должны поддерживать следующие аннотации: @PermitAll, @DenyAll, @RolesAllowed, @DeclareRoles и @RunAs.

EE.6.25 Общие аннотации для требований платформы Java™ 1.1

Спецификация Common Annotations определяет аннотации языка Java, которые используются несколькими другими спецификациями, включая эту спецификацию. Спецификации, которые используют эти аннотации, полностью определяют требования для этих аннотаций. Контейнер апплета не должен поддерживать ни одну из этих аннотаций. Все другие контейнеры должны предоставлять определения для всех этих аннотаций и должны поддерживать семантику этих аннотаций, как описано в соответствующих спецификациях и суммировано в следующей таблице.

Таблица EE.6-5. Поддержка общих аннотаций по контейнерам

 
Приложение-клиент для аннотации Web   EJB

Ресурс ГГГ
Ресурсы ГГГ
ПостКонструкция ГГГ
ПреДестрой ГГГ
Сгенерированный N          N     N
RunAs           N          Y     Y
Объявить роли Нью-Йорк
Роли Разрешено NYY
Разрешить все NYY
DenyAll         N          Y     Y

Немного ниже в спецификации. В нем говорится: "... теперь веб-контейнер должен поддерживать аннотации RolesAllowed, PermitAll и DenyAll. Спецификация Servlet и JAX-RS содержат подробности".

В нем не упоминается спецификация JSF, поэтому я предполагаю, что эти аннотации нельзя использовать на управляемых bean-компонентах. Почему бы и нет?

Как сквозная проблема, такая как авторизация, реализована на веб-уровне для объектов, которые не являются сервлетами или фильтрами, и помимо использования декларативной безопасности на уровне страницы в web.xml?

1 ответ

Решение

... и ответ... EJB - это управляемый компонент CDI. Чтобы использовать @RolesAllowed на управляемом бине, просто превратите его в EJB и наслаждайтесь. Вот пример EJB, используемого в качестве бина поддержки!

Другие вопросы по тегам