Итак, я столкнулся с довольно сложным вопросом, похожим на мой, и я начал его получать, пока не понял, что нет. Короче говоря, вот история:Фильтр аутентификации Homegrown не отображает страницу приветствия
В аутентификационном компоненте успех аутентификации должен привести к доступу к некоторым веб-ресурсам, отказ должен «фильтровать» доступ и перенаправлять на текущую страницу входа. Теперь, в этой аутентификации бобе, я добавил эту строку в случае успеха:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(authentificationBean1.AUTH_STATE, "true") ;
AUTH_STATE определяется в компоненте, как:
public static final String AUTH_STATE = "";
В случае неудачи, я следующее :
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(authentificationBean1.AUTH_STATE, null) ;
Теперь в фильтре (один, который применяется к каждому файлу кроме аутентификации страницы), мой doFilter м еню выглядит следующим образом:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (((HttpServletRequest) request).getSession().getAttribute(authentificationBean1.AUTH_STATE) == null) {
((HttpServletResponse) response).sendRedirect("authentification.xhtml");
}
if(((HttpServletRequest) request).getSession().getAttribute(authentificationBean1.AUTH_STATE) != null) {
((HttpServletResponse) response).sendRedirect("accueil.xhtml");
}
}
Моя идея была, что если аутентификация прошла успешно, то authentificationBean1.AUTH_STATE сессия attribut будет установлен на что-то не нулевой, таким образом, в испытании фильтра я буду иметь возможность перенаправить страница welcom (accueil.xhtml); если этот атрибут равен нулю, мы останемся на странице аутентификации.
Дегустация всего: фильтр, похоже, работает, но слишком много, поэтому я имею в виду, даже если проверка аутентификации должна быть успешной, она не позволяет мне перейти на страницу приветствия. На самом деле он отлично работал без фильтра, похоже, что я пропустил что-то об использовании фильтров с JSF или фильтрами.
P.S: не применялся chain.doFilter, потому что у меня нет другого фильтра для вызова, но что-то подозреваю.
Спасибо за ваши указания.
EDIT:
<filter>
<filter-name>RestrictionFilter</filter-name>
<filter-class>beans.RestrictionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RestrictionFilter</filter-name>
<url-pattern>/faces/accueil.xhtml</url-pattern>
</filter-mapping>
Не могли бы вы разместить свой web.xml? – dratewka
Уверенная вещь (извините за опоздание), я отредактирую свой первоначальный пост. – Akheloes
Я сделал несколько System.out здесь, теперь я могу заметить, что когда ** AUTH_STATE ** имеет значение NULL, это не учитывается, в противном случае я получил фильтр для работы в другом месте (где ** AUTH_STATE ** не равно null). – Akheloes