Witam
Mam do napisania prostą aplikację z logowaniem.
Generalnie po zalogowaniu mamy dostęp do kilku podstron w aplikacji.
Korzystam z JSF i w tym chciałbym napisać całą moją aplikację. Znalazłem post w którym mówiono aby skorzystać z: javax.servlet.Filter. Napisałem sobie taki filtr który podpiąłem w web.xml tak że działa.
Problem polega na tym co zrobić, aby filtrować żądania użytkownika tak, aby niezalogowany użytkownik miał dostęp tylko do index.html, a zalogowani do reszty.
Napisałem takie coś:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpSession session = ((HttpServletRequest) request).getSession();
User user = (User) session.getAttribute("currentUser");
if(user != null)
{
System.out.println("Użytkownik zalogowany");
chain.doFilter(request, response);
}
else
{
chain.doFilter(request, response);
System.out.println("Użytkownik Niezalogowany");
HttpServletRequest req = (HttpServletRequest) request;
String adress = req.getServletPath();
String[] elements = adress.split("/");
if(elements[1].contains(".html"))
{
if(!elements[1].contentEquals("index.html"))
{
HttpServletResponse res = (HttpServletResponse) response;
res.setStatus(res.SC_MOVED_TEMPORARILY);
res.setHeader("Location", "index.html");
}
}
}
}
Powyższy kod filtruje nie tylko dokumenty html ale również wszystko co leci np skrypty js pliki css itp
Czy istnieje jakiś inny mechanizm lepszy, który łatwo można zainstalować?
Eksperymentowałem z JBoss Seam ale powiem szczerze, że szybkość działania Serwera i aplikacji u mnie na PC jest taka że nie da się w tym wygodnie pracować.
Prosiłbym o rady.
Pozdrawiam :)