Boa Tarde Senhores,
Estou tentando criar um WebFilter. Está me retornando que não é possível por causa de Loop. Busquei alguns sites já mas não achei a luz no fim do túnel ainda.
Segue meus códigos abaixo:
<ui:composition template=“template.xhtml”>
<ui:define name=“content”>
<h:messages />
<h:form id="loginForm">
<h:panelGrid columns="2" rendered="#{!login.loggedIn}">
<h:outputLabel for="username">Username:</h:outputLabel>
<h:inputText id="username" value="#{credentials.username}" />
<h:outputLabel for="password">Password:</h:outputLabel>
<h:inputSecret id="password" value="#{credentials.password}" />
</h:panelGrid>
<h:commandButton id="logout" value="Logout" action="#{login.logout}"
rendered="#{login.loggedIn}" />
<h:commandButton id="login" value="Login" action="#{login.login}"
rendered="#{!login.loggedIn}" />
</h:form>
<h:link outcome="/users.xhtml" rendered="#{login.loggedIn}">View users</h:link>
</ui:define>
</ui:composition>
package org.jboss.as.quickstarts.login;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
@SessionScoped
@Named
public class Login implements Serializable {
private static final long serialVersionUID = 7965455427888195913L;
@Inject
private Credentials credentials;
@Inject
private UserManager userManager;
private User currentUser;
public void login() throws Exception {
User user = userManager.findUser(credentials.getUsername(),
credentials.getPassword());
if (user != null) {
this.currentUser = user;
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Welcome, " + currentUser.getName()));
} else {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Cliente não encontrado."));
}
}
public void logout() {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Goodbye, " + currentUser.getName()));
currentUser = null;
}
public boolean isLoggedIn() {
boolean aa = currentUser != null;
System.out.println("currentUser: " + aa);
return aa;
}
@Produces
@LoggedIn
public User getCurrentUser() {
return currentUser;
}
}
package org.jboss.as.quickstarts.login;
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;
import javax.servlet.http.HttpSession;
@WebFilter("/*")
public class LoginFilter implements Filter {
@Override
public void destroy() {
System.out.println("teste destroy");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("teste doFilter");
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
Login login = (Login) session.getAttribute("Login");
System.out.println("login: " + login);
if(login != null && login.getCurrentUser() != null) {
System.out.println("currentUser: " + login.getCurrentUser());
System.out.println("name: " + login.getCurrentUser().getName());
} else {
System.out.println("por aqui");
}
// if (login == null || !login.isLoggedIn()) {
// System.out.println(“login == null”);
// res.sendRedirect(req.getContextPath() + “/home.jsf”);
//
// } else {
// System.out.println(“login != null”);
// }
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("teste init");
}
}