Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exigir login usando Filter (Filtro de autenticação)

Eu usei esse curso pra criar meu próprio mini projeto, acabei tendo a ideia de fazer um filtro de autenticação. O problema com que me deparei é: por causa do MVC criado aqui as páginas são acessadas usando QUERY STRING.

O urlPatterns do @WebFilter por sua vez não entende query string e sim nome de páginas. Tentei colocar nome na Servlet e chamar no Flter, deu problema também parece que as classes não são Servlet e só implementam a interface Task.

Por fim, consegui mas é uma gambiarra, peço conselhos...

@WebFilter({"/controller"})
public class AuthenticationFilter implements Filter{

    public static String[] restritos = new String[]{"CadastraProduto", "CadastraCategoria"};    

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        Boolean isRestrict = Arrays.asList(restritos).contains(req.getParameter("action"));

        /*users should be logged to access these pages*/
        if(isRestrict && req.getSession().getAttribute("userOnline") == null) {

            //dispatcher to login.jsp        
            RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/pages/login.jsp");
            dispatcher.forward(request, response);

        }else {
            //they are already logged
            chain.doFilter(request, response);        
        }    
    }

    @Override
    public void destroy() {}

}
1 resposta
solução!

Dá uma olhada na estratégia do Vraptor (Framework MVC, criado pelo Grupo Caelum/Alura)

http://www.vraptor.org/pt/docs/trabalhando-com-a-view/

public class ClientsController {
    public void list() { 
        //... 
    }
}

Este método acima renderizará a view /WEB-INF/jsp/clients/list.jsp

Parabéns pela iniciativa do projeto, com isso você consegue adquirir uma boa base de como os frameworks mvc funcionam.

Mas Servlet é uma tecnologia base , existe muita coisa pronta em cima dela que facilitaria muito o desenvolvimento de aplicações.

Boa sorte, e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software