powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF2 + JEE вопрос про авторизацию пользователей
5 сообщений из 5, страница 1 из 1
JSF2 + JEE вопрос про авторизацию пользователей
    #37922037
Viktor Grafskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, пытаюсь перенести приложение с GUI C# на JEE + JSF2. Пользователи должны авторизовываться в приложении на основе таблицы `users`(в таблице содержатся три поля username , зашифрованный password и роль пользователя). Прошу подсказать, каким образом возможно приделать авторизацию к программе, не завязываясь на конкретный сервер приложений. Мне необходимо что бы пользователи не прошедшие авторизацию могли бы иметь доступ только к странице login.xhtml, а пользователи, которые выполнили вход могли бы после окончания работы закрывать сессию(т.е. делать logout). Спасибо.
...
Рейтинг: 0 / 0
JSF2 + JEE вопрос про авторизацию пользователей
    #37922196
shaden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spring Security
...
Рейтинг: 0 / 0
JSF2 + JEE вопрос про авторизацию пользователей
    #37922208
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем тебе штатные средства не угодили, на серваке только Realm прикрутить надо, на Tomcate точно есть DatabaseRealm на Glassfish не знаю, я Ldap использую, да полюбому есть тема распространенная
...
Рейтинг: 0 / 0
JSF2 + JEE вопрос про авторизацию пользователей
    #37922240
Viktor Grafskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем реализовал с помощью javax.servlet.Filter, вроде работает, может кому пригодиться:
1) Реализуем интерфейс Filter:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
@WebFilter
public class AuthFilter implements javax.servlet.Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
// STUB
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        UserBean userBean = (UserBean) req.getSession().getAttribute("userBean");
        if (userBean == null || !userBean.isLoggedIn()) {
            res.sendRedirect(req.getContextPath() + "/login.jsf");
        } else {
            chain.doFilter(request, response);
        }
    }

    @Override
    public void destroy() {
// STUB
    }
}


2) Добаляем описание фильтра в web.xml, данная конфигурация, говорит контейнеру о том, что все запросы адресованные к файлам каталога /restricted должны проходить через сервлет AuthFilter
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
    <filter>
        <description>Main Authentification Filter</description>
        <filter-name>AuthFilter</filter-name>
        <filter-class>my.package.fastreports.AuthFilter</filter-class>
        <init-param>
            <param-name>loginPage</param-name>
            <param-value>/login.xhtml</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>AuthFilter</filter-name>
        <url-pattern>/restricted/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
...


3) Код управляемого бина
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {

    @EJB
    private UserFacade userFacade;
    private String username;
    private String password;
    private User user;

// GETTERS + SETTERS
// .....

    public String doLogin() {
        user = userFacade.getUser(username, password);
        if (user != null) {
            return "/restricted/index?faces-redirect=true";
        } else {
            return "/loginFailed?faces-redirect=true";
        }
    }

    public String doLogout() {
        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "/login?faces-redirect=true";
    }

    public boolean isLoggedIn() {
        return user != null;
    }


4) Ну и форма авторизации:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        <h:form>
            <p:panel id="panel" header="Login Page"  >
                <h:panelGrid columns="3">
                    <h:outputLabel for="username" value="Username:" />
                    <p:inputText id="username" value="#{userBean.username}" required="true" />
                    <h:outputLabel for="password" value="Password:" />
                    <p:password id="password" value="#{userBean.password}" required="true" />
                </h:panelGrid>
            </p:panel>
            <p:commandButton value="Submit" update="panel" action="#{userBean.doLogin()}" />
        </h:form>
...
Рейтинг: 0 / 0
JSF2 + JEE вопрос про авторизацию пользователей
    #37922276
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таком простом случае вариант с фильтром наиболее предпочтительный вы все правильно разобрались
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF2 + JEE вопрос про авторизацию пользователей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]