Bom Dia!
Estou com a seguinte dificuldade:
Tenho uma página de login e gostaria de que toda vez que o usuário chegasse lá, fosse feita uma verificação.
Caso ele já estiver logado, ele é redirecionado para a página principal.
Eu consegui isso com o código abaixo:
<%@ page import="java.util.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <jsp:useBean id="validaLogin" class="dao.admin.TestaLoginAdmin" /> <c:set var="AdminLogado" value="${validaLogin.testaLoginAdmin(pageContext.request)}" /> <c:choose> <c:when test="${AdminLogado != null}"> <script>window.location="principal.jsp"; </script> </c:when> </c:choose> <div id="indexMeio"> <h2>Formulário de Acesso ao ambiente administrativo</h2><br /><br /> <form action="../LoginAdminServlet" method="post"> <label>Login</label> : <input type="text" name="login" id="login" maxlength="10" required="required" /><br /><br /> <label>Senha</label> : <input type="password" name="senha" id="senha" maxlength="10" required="required" /><br /><br /><br /> <input type="submit" value="Entrar"> </form><br /> </div>
Sim, funciona normalmente.
Mas eu tenho um filtro para verificar nas outras páginas se o usuário esta logado para poder acessá-las e esse filtro bloqueia o script acima dando erro de servidor.
Mas pensei se isso não poderia ser feito diretamente no filtro mas não estou conseguindo.
Podem me ajudar?
Veja o filtro:
package filtro; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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("/admin/*") public class AdminFilter implements Filter { private static List<String> allowedURIs; public AdminFilter() { // TODO Auto-generated constructor stub } 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 res = (HttpServletResponse) response; HttpSession sessao= req.getSession(); if( sessao.getAttribute("admin")!= null || precisaDireitoAcessoURI(req.getRequestURI()) || req.getRequestURI().equals("/imwsaogotardo/admin/") || req.getRequestURI().equals("/imwsaogotardo/admin") ) { chain.doFilter( request, response ); } else { res.sendRedirect("index.jsp"); } } public void init(FilterConfig fConfig) throws ServletException { if(allowedURIs == null) { allowedURIs = new ArrayList<String>(); allowedURIs.add("/imwsaogotardo/admin/index.jsp"); allowedURIs.add("/imwsaogotardo/admin/retornos/"); } } public boolean precisaDireitoAcessoURI(String uriAtual) { for (String uri: allowedURIs) { if (uriAtual.contains(uri)) return true; } return false; } }
Ou de repente um recurso para funcionarem juntos o filtro e esse script