Filter x Login

Alguem poderia me ceder um exemplo de uso de filter para validar usuário ?

Quiquié esse negócio de Filer que você está falando? Explique-se

Decerto não deve ser isto aqui: www.excelmeridiandata.com/products/nas_datanas_xp/datanas-smartsync.pdf

Filer que estou dizendo é filtros servlets que servem para filtrar por exemplo se um usuário está logado. O nome correto é: “Intercepting Filter”

ah, bom, então vou corrigir o seu “subject” que vai dar um monte de confusão.

  • Podia dizer para que application server você precisa escrever esse servlet, e para que ambiente? Por exemplo, se é Tomcat e a autenticação é em um domínio NT do Windows, você pode tentar um servlet que já está pronto em http://jcifs.samba.org/

http://www.guj.com.br/posts/list/28287.java

o exemplo do projeto queestou fazendo:
Controlador

package br.com.dogato.controle;

import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.dogato.controle.actions.*;
	


public class PetController extends HttpServlet {
	
	private HashMap actions = new HashMap();
	
	public void init() throws ServletException {
		
		actions.put("login", new ActionLogin());
		actions.put("logout", new ActionLogout());
		actions.put("erro", new ActionErro());
		actions.put("cadUsu", new ActionCadastroCliente());
	}	
	
	private Action getAction(String chave){
		try{	
			System.out.println("Chave " + chave);
			Action acao = (Action)actions.get(chave);	
			if(acao == null){
				System.out.println("Acao nula");
				return	(Action)actions.get("login");
			}
			else{
				System.out.println(((Action)actions.get(chave)).getClass());
				return	(Action)actions.get(chave);
			}
		}
		catch(Exception e){
			e.printStackTrace();
			return	(Action)actions.get("login");
		}
		
	}
	
	protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		service(arg0, arg1);
	}

	protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		service(arg0, arg1);
	}

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String actionType = request.getParameter("actionType");
		System.out.println(actionType);
		Action acao = getAction(actionType);
		acao.execute(request,response);		
	}	

}

Filtro:

package br.com.dogato.controle;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import br.com.dogato.persistencia.UsuarioDAO;


public class Filtro implements Filter {

    private ServletContext context = null;

    public void init(FilterConfig config) throws ServletException {
        this.context = config.getServletContext();
	}

    public void destroy() {
    	context = null;
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    
        if (request instanceof HttpServletRequest) {
        	HttpServletRequest req = (HttpServletRequest)request;
            if(req.getSession().getAttribute("usuario") == null){
            	UsuarioDAO dao = new UsuarioDAO();
            	req.getSession().setAttribute("usuario", dao.buscarUsuario(req.getUserPrincipal().getName()) );            	      	
            }           
        }     
        chain.doFilter(request, response);
    
    }
}

WEB.XML

<servlet>
		<servlet-name>PetController</servlet-name>
		<display-name>PetController</display-name>
		<description>Servlet Controlador</description>
		<servlet-class>br.com.dogato.controle.PetController</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>PetController</servlet-name>
		<url-pattern>/controller</url-pattern>
	</servlet-mapping>
	
	<filter>
        <filter-name>Filtro</filter-name>
        <filter-class>br.com.dogato.controle.Filtro</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>Filtro</filter-name>
        <url-pattern>/controller</url-pattern>
    </filter-mapping>

Utilizei o filtro para que assim que o usuário logue, eu pegue seu login e dê para um DAO ir no banco preencher um ojbeto usuário, e colocar na sessão, e só fazer isso 1x.

Qulaquer dúvida tamos ai.

Acho que para gerenciar o login seria melhor utilizar filtros e um JDBC Realm, pq ai o realm cuida do seu login e o filtro só complementa.