Problema com autenticação

Boa tarde, pessoal, quero saber como fazer uma autenticação para acesso em apenas algumas páginas:
Tenho as páginas, as quais quero que sejam disponibilizadas apenas quando o usuário logar.
empresa.xhtml;
formEmpesa.xhtml;
login.xhtml
lista.xhtml

mas as páginas quero que sejam disponibilizadas sem autenticação.
index.xhtml;
resultpesq.xhtml;
contato.xhtml e
contrato.xhtml

abaixo tentei criar sem sucesso um filtro e um managed bean para tal, porém o que às vezes acontece é não ter um redirecionamento correto ou simplesmente tudo estar disponível sem autenticação têm idéia de como ajudar? agradeço desde já, abaixo disponibilizo o que tentei (sem sucesso fazer até agora)…
Gostaria também, se possível de tentar fazer através de uma consulta em uma tabela específica a existência de um usuário/senha.
Muito obrigado.

Managed Bean

package managedbeans;

import java.util.HashMap;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

@ManagedBean
public class AutenticationBean {

	private static Map<String, String> mapa = new HashMap<String, String>();

	private String usuario;
	private String senha;
	static {
		AutenticationBean.mapa.put("smnj", "753159");

	}

	public String autentica() {
		FacesContext fc = FacesContext.getCurrentInstance();
		if (AutenticationBean.mapa.containsKey(this.usuario)
				&& AutenticationBean.mapa.get(this.usuario).equals(this.senha)) {

			ExternalContext ec = fc.getExternalContext();
			HttpSession session = (HttpSession) ec.getSession(false);
			session.setAttribute("usuario", this.usuario);
			System.out.println("----------------------------");
			System.out.println(usuario);
			System.out.println(senha);
			System.out.println("----------------------------");
			return "index";

		} else {
			FacesMessage fm = new FacesMessage("Uuário e/ou senha inválidos");
			fm.setSeverity(FacesMessage.SEVERITY_ERROR);
			fc.addMessage(null, fm);
			return "login";
		}
	}

	public static Map<String, String> getMapa() {
		return mapa;
	}

	public static void setMapa(Map<String, String> mapa) {
		AutenticationBean.mapa = mapa;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String registraSaida() {
		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpSession session = (HttpSession) ec.getSession(false);
		session.removeAttribute("usuario");
		return "login";
	}
}

Filtro


package filters;

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(servletNames = { "Faces Servlet" })
public class ControleDeAcesso implements Filter {
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();

		if (session.getAttribute("usuario") != null
				|| req.getRequestURI().endsWith(
						"/LuzianiaOnline/pages/login.xhtml")) {
			chain.doFilter(request, response);

		} else {
			HttpServletResponse res = (HttpServletResponse) response;
			res.sendRedirect("/LuzianiaOnline/pages/login.xhtml");
		}
	}

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

	@Override
	public void destroy() {

	}
}