Pessoal eu to por fora do JSF 2.0
Queria saber como que eu implemento um filtro que redirecione quando eu nao estiver logado.
Eu fiz isso
Filter
/**
* Servlet Filter implementation class LoginFilter
*/
public class LoginFilter implements Filter {
@Inject
UsuarioBackBean usuarioBean;
/**
* Default constructor.
*/
public LoginFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//Captura o ManagedBean chamado “usuarioMB”
// UsuarioBackBean usuario = (UsuarioBackBean)
// ((HttpServletRequest) request)
// .getSession().getAttribute("usuarioBean");
//Verifica se nosso ManagedBean ainda não
//foi instanciado ou caso a
//variável loggedIn seja false, assim saberemos que
// o usuário não está logado
if (usuarioBean == null|| ! usuarioBean.isLoggedIn() ) {
String contextPath = ((HttpServletRequest) request)
.getContextPath();
//Redirecionamos o usuário imediatamente
//para a página de login.xhtml
((HttpServletResponse) response).sendRedirect
(contextPath +"/index.xhtml");
} else {
//Caso ele esteja logado, apenas deixamos
//que o fluxo continue
chain.doFilter(request, response);
}
}
@Stateless
@SessionScoped
@Named("usuarioBean")
public class UsuarioBackBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@EJB
UsuarioControllerRemote usuarioJPAcontroller;
private Usuario usuario;
@ManagedProperty(value="#{navigationBean}")
private NavigationBean navigationBean;
private Boolean log;
private String email;
private String password;
public String doTest() {
usuario = new Usuario();
usuario.setNome(email);
usuario.setPassword(password);
Usuario u = usuarioJPAcontroller.findByLoginAndSenha(usuario);
if (u != null) {
log=true;
return "/portal/index.jsf";
} else {
log=false;
return null;
}
}
public String doAgenda() {
log=true;
return "/manterAgenda.jsf";
}
public Boolean isLoggedIn() {
return log;
}
public Usuario getUsuario() {
return (Usuario) usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
agora quando eu clico dentro de um link que esta na pasta restrita ele redireciona
para pagina inicial mesmo eu estando logado o link seria doAgenda()