Bom dia!
Pessoal,
Criei meu filtro de sessão que funciona perfeitamente na Ide eclipse, mais quando coloco para rodar no browser ele congela deixa digitar nos box de Usuário e Senha mais nada acontece.
uma coisa que descobri quando dou um F5 no browser Para atualizar, ele volta a funcionar normalmente. caso alguém com mais experiência possa me ajudar. grato
Minha tela login onde digito O Nome de Usuário e Senha
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<h:outputStylesheet library="css" name="default.css"/>
</h:head>
<h:body style="display:flex;">
<h:form style=" margin:auto;">
<p:growl id="growl-mensagem" showDetail="true" sticky="true" />
<p:panel id="panel-login-principal"
header="Login"
footer="Sistema ERP"
style="width:400px">
<h:panelGrid columns="2" cellpadding="10">
<p:graphicImage url="/resources/imagens/locked.png" />
<h:panelGrid columns="2" cellpadding="5">
<p:outputLabel value="Login"/>
<p:inputText id="inputText-login"
value="#{loginBean.nomeUsuario}"/>
<p:outputLabel value="Senha"/>
<p:password id="password-usuario"
value="#{loginBean.senha}"/>
<p:spacer/>
<p:commandButton value="Acessar"
id="commandButton-acessar"
icon="ui-icon-gear"
action="#{loginBean.login}"
update="growl-mensagem" />
</h:panelGrid>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
Minha Classe AutorizacaoFilter Onde faço o filtro
@WebFilter("*.xhtml")
public class AutorizacaoFilter implements Filter {
@Inject
private UsuarioController autenticacao;
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
if (!autenticacao.isLogado()
&& !request.getRequestURI().endsWith("/index.xhtml")
&& !request.getRequestURI().contains("/javax.faces.resource/")) {
response.sendRedirect(request.getContextPath() + "/index.xhtml");
} else {
chain.doFilter(req, res);
}
}
@Override
public void init(FilterConfig config) throws ServletException {
}
@Override
public void destroy() {
}
}
Classe login Onde Verifico se o usuário existe no banco
public String login() {
usuarioModel = usuarioRepository.ValidaUsuario(this.nomeUsuario,this.numSenha);
if (usuarioModel != null) {
this.usuarioController.setNome(this.nomeUsuario);
this.usuarioController.setDataLogin(new Date());
this.usuarioController.setCodigoId(usuarioModel.getCodigo());
return "sistema/home?faces-redirect=true";
} else if ((this.nomeUsuario).isEmpty()) {
NegocioException.MensagemAlerta("Favor informar o login!");
} else if ((this.numSenha).isEmpty()) {
NegocioException.MensagemAlerta("Favor informar a senha!");
} else {
NegocioException.MensagemErro("Usuário/senha inválidos!");
}
return null;
}
Minha Classe UsuarioController onde verifico se o usuário esta Logado ou não pelo método isLogado()
@Named
@SessionScoped
public class UsuarioController implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UsuarioRepository usuarioRepository;
private String nome;
private Date dataLogin;
private Long codigoId;
public boolean isLogado() {
return nome != null;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Long getCodigoId() {
return codigoId;
}
public void setCodigoId(Long codigoId) {
this.codigoId = codigoId;
}
public Date getDataLogin() {
return dataLogin;
}
public void setDataLogin(Date dataLogin) {
this.dataLogin = dataLogin;
}
se alguém poder me ajudar já estou a dias tentando descobrir onde estou errando.