Я пытаюсь реализовать фильтр сервлета, чтобы настроить авторизацию в веб-приложении. Однако фильтр не вызывается, и я не могу найти причину.Сервлет фильтр не работает
Это моя реализация фильтра:
public class LoginFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
LoginBean session = (LoginBean) req.getSession().getAttribute("LoginBean");
String url = req.getRequestURI();
if(session == null || !session.isLogged) {
if(!(url.indexOf("/home/index.xhtml") >= 0)){
resp.sendRedirect(req.getServletContext().getContextPath() + "/home/index.xhtml");
}
else{
chain.doFilter(request, response);
}
} else {
if(session.role == 1) {
if(url.indexOf("/admin/*") >= 0 || url.indexOf("/home/index.xhtml") >=0){
resp.sendRedirect("/user/index.xhtml");
} else if (url.indexOf("/home/logout.xhtml") >= 0){
req.getSession().removeAttribute("LoginBean");
resp.sendRedirect(req.getServletContext().getContextPath() + "/home/index.xhtml");
}
else{
chain.doFilter(request, response);
}
} else {
if(url.indexOf("/user/*") >= 0 || url.indexOf("/home/index.xhtml") >=0){
resp.sendRedirect(req.getServletContext().getContextPath() + "/admin/index.xhtml");
} else if (url.indexOf("/home/logout.xhtml") >= 0){
req.getSession().removeAttribute("LoginBean");
resp.sendRedirect(req.getServletContext().getContextPath() + "/home/index.xhtml");
}
else{
chain.doFilter(request, response);
}
}}}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
Кроме того, здесь есть отображение фильтра:
<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>com.ibm.club.data.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LogginFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
Фильтр кажется действительным только для/user/URL-шаблон – Ben
значения имени фильтра не соответствуют определению фильтра и отображению фильтра в web.xml. LoggingFilter vs LogginFilter ... –
@Ben, это было то, что я пытался исправить ошибку, я вернул его обратно, но, похоже, он остался таким же образом в моем сообщении –