@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, используемого в качестве бина поддержки!