Witam ponownie :)
Jako, że zrezygnowałem z JDBCRealm postanowiłem przerzucić się na mechanizm filtrów. I tak, znowu pojawiły się problemy. Otóż mam prosty filtr:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest myRequest = (HttpServletRequest) request;
HttpServletResponse myResponse = (HttpServletResponse) response;
HttpSession session = myRequest.getSession(false);
User user = (User) session.getAttribute("userObject");
String accessRights= user.getGr();
if (!accessRights.equals("ADMIN")) {
myResponse.sendRedirect("/WebSecurityTest-war/faces/login.jsp");
} else {
chain.doFilter(request, response);
}
}
który sprawdza pole gr w obiekcie User przekazanym do sesji podczas logowania:
session = request.getSession(true);
session.setAttribute("userObject", userObject);
W skrócie, gdy na zabezpieczoną stronę wejdę korzystając z f-c.xml, bądź poprzez przekierowanie bezpośrednie - aplikacja w ogóle nie przechodzi przez filtr. Jednak, gdy wpisze adres tej strony bezpośrednio w pasku adresu przeglądarki filtr zadziała bezbłędnie. I tutaj jestem w kropce, jak rozwiązać ten problem. A i jeszcze mapowanie filtrów z web.xml
<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>kkp.filters.AdminFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/faces/members/admin/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Z góry dziękuje za pomoc :)
P.S. Jeżeli ktoś dysponuje jakimś fajnym tutorialem dotyczącym filtrów, będę bardzo wdzięczny za udostępnienie.