Предложение по авторизации JSF - PullRequest
1 голос
/ 12 августа 2011

Я узнал, как использовать аутентификацию контейнера с областью JDBC.Я много искал в интернете, но не смог найти ничего по авторизации JSF, кроме следующей статьи. JSF-авторизация

Моя цель - избежать доступа к защищенным страницам с помощью прямых ссылок, а также показать / скрыть элементы меню и компоненты форм на основе аутентифицированных пользовательских привилегий.Последняя часть может быть реализована с использованием атрибута рендеринга тегов JSF, но перед тем, как создавать собственное грязное и высокосвязанное решение, я задаюсь вопросом, есть ли какие-то конкретные рекомендации или библиотеки, которые могут помочь.На самом деле, количество компонентов, которые должны быть отображены условно, достаточно велико, и я не хотел бы писать конкретную функцию для каждого из них.Возможно, я могу создать для каждого аутентифицированного пользователя карту с именами (id) всех условно визуализируемых компонентов и одну функцию с параметром String (уникальное имя / id компонента).Это хорошая идея ?Какие у меня есть альтернативы?Я не хотел бы добавлять в проект другие фреймворки общего назначения, такие как Spring, для использования только небольшой их части (безопасности).

Спасибо, Филиппо

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

В версии языка выражений в Java EE 6 вы сможете использовать выражения, подобные этим:

<h:inputText rendered="#{facesContext.externalContext.isUserInRole('foo')}" />

В более старых версиях вы можете создать управляемый компонент этой формы:

public class RoleMap implements Map<String, Boolean> {

    public Boolean get(Object key) {
        ExternalContext extCtxt = FacesContext.getCurrentInstance()
                                              .getExternalContext();
        return extCtxt.isUserInRole(key.toString());
    }

    //TODO: other methods; mostly throwing UnsupportedOperationException

Тест может быть выражен в виде:

<h:inputText rendered="#{roleMap['foo']}" />

Сторонние платформы предлагают другие варианты, такие как атрибуты компонента visibleOnUserRole библиотеки Apache Tomahawk.

1 голос
/ 12 августа 2011

Взгляните на Apache Shiro , специализированную инфраструктуру безопасности (и, возможно, более простую в использовании, чем Spring Security).

...