Я экспериментирую с фильтрами сервлетов. Я создал две страницы JSP - Home и Login. Я хочу создать следующий поток:
При доступе к домашней странице без учетных данных в сеансе -> перенаправить на страницу входа.
При вводе правильных учетных данных (сравните их с жестко заданными константами) перенаправляйте на домашнюю страницу.
При вводе неправильных учетных данных - снова перенаправить на страницу входа.
Вот мой код на данный момент, у меня проблема с бесконечным циклом при прямом входе на домашнюю страницу из-за нулевых проверок. Подскажите, пожалуйста, как правильно поступить в данной ситуации.
package bg.filter.test;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter ("/pages/*")
public class LoginFilter implements Filter {
private static final String name = "admin";
private static final String pass = "123";
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String name = request.getParameter("username");
String pass = request.getParameter("password");
if (name != null && pass != null) {
if (LoginFilter.name.equals(name) && LoginFilter.pass.equals(pass)) {
((HttpServletRequest) request).getSession().setAttribute("username", name);
((HttpServletRequest) request).getSession().setAttribute("password", pass);
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Home.jsp");
} else {
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Login.jsp");
}
} else {
name = (String)((HttpServletRequest) request).getSession().getAttribute("username");
if(name == null) {
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Login.jsp");
}
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}