Я разрабатываю мобильное веб-приложение с использованием JSF и Apache myFaces 1.2.9.
Во время аутентификации я вызываю сервлет, который выполнит аутентификацию, а затем установит некоторый атрибут в сеансе.
И в каждом конструкторе управляемого бина я проверяю этот атрибут сеанса и, соответственно, устанавливаю логическое значение. Это логическое значение я устанавливаю в качестве значения для визуализируемого атрибута tr: document. Что-то вроде этого
<tr:document title="someid" rendered="#{controller.render}">
//SOME PAGE CONTENTS
</tr:document>
На основе атрибута сеанса страница может отображаться или нет. Я хочу обработать эту проблему более изящно.
Я задал этот вопрос в SO, который сообщает об использовании фильтров.Я использовал фильтр, как показано здесь .
Я изменил webFilter urlPattern на /faces/jsp/*
, поскольку я хочу проверить атрибут сеанса для каждого jsp.
В doFilter () метод, который я проверяю для атрибута сеанса, подобного этому, и если он null
, я перенаправляю на неверную страницу пользователя.
System.out.println("In doFilter");
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
if (session.getAttribute("myattribute") == null) {
response.sendRedirect(properties.getProperty(INVALID_USER_REDIRECTURL, true)); // No attribute found, so redirect to Invalid user page.
} else {
chain.doFilter(req, res); // attribute found, so just continue request.
}
Но я не вижу свой фильтр getting сработал, так как я не вижу никаких отладочных операторов, которые я хранил в своем фильтре init(),doFilter()
методы.
Любая помощь?
РЕДАКТИРОВАТЬ: Я только что прошел через это сопоставление фильтров в моей сети.xml
<filter>
<filter-name>trinidad</filter-name>
<filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>trinidad</filter-name>
<servlet-name>faces</servlet-name>
</filter-mapping>
Полагаю, у моих лиц есть какой-то фильтр. Могу ли я иметь еще один мой?