problemas com filter - JSF/Hibernate
Bom dia!! Fiz recentemente assinatura de Java e precisei de alguns tutoriais de vcs de filter, porém estou tendo problemas...alguem poderia me ajudar?
Eu consigo logar com usuario e senha q digito, mas o filter não está funcionando. Eu consigo ir direto para página index.jsf sendo que nao era pra deixar
Ou até mesmo se eu logo e depois volto para pagina de login e volto para index de novo, ele aceita .. ou seja..nao está filtrando
Alguma ajuda?
[b]loginBean[/b]
[b]UsuarioDaoImpl[/b]
[b]AuthFilter[/b]
Eu consigo logar com usuario e senha q digito, mas o filter não está funcionando. Eu consigo ir direto para página index.jsf sendo que nao era pra deixar
Ou até mesmo se eu logo e depois volto para pagina de login e volto para index de novo, ele aceita .. ou seja..nao está filtrando
Alguma ajuda?
[b]loginBean[/b]
@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean {
private Usuario usuario;
public LoginBean() {
if (this.usuario == null) {
this.usuario = new Usuario();
}
}
public void redirecionar() throws IOException{
FacesContext faces = FacesContext.getCurrentInstance();
ExternalContext context = faces.getExternalContext();
context.redirect("/ControleChanges/index.jsf");
}
public void login(ActionEvent actionEvent) throws IOException {
RequestContext context = RequestContext.getCurrentInstance();
FacesMessage msg = null;
boolean loggedIn = false;
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuario = usuarioDao.buscarPorUsuario(usuario);
if (usuario != null) {
loggedIn = true;
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("user", "ok");
redirecionar();
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", usuario.getUsername()); //"Usuario"
} else {
loggedIn = false;
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid credentials");
}
FacesContext.getCurrentInstance().addMessage(null, msg);
context.addCallbackParam("loggedIn", loggedIn);
}
public Usuario getUsuario() {
if (usuario == null){
usuario = new Usuario();
}
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
[b]UsuarioDaoImpl[/b]
public class UsuarioDaoImpl implements UsuarioDao {
@Override
public Usuario buscarPorUsuario(Usuario usuario) {
Session session = HibernateUtil.getSessionFactory().openSession();
String sql = "select u from Usuario u where username=:user and password=:pass";
Query query = session.createQuery(sql);
query.setString("user", usuario.getUsername());
query.setString("pass", usuario.getPassword());
return (Usuario) query.uniqueResult();
}
}
[b]AuthFilter[/b]
public class AuthFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest rq = (HttpServletRequest) request;
HttpServletResponse rp = (HttpServletResponse) response;
boolean auth = rq.getSession().getAttribute("user") != null;
if (!auth && !rq.getRequestURL().toString().contains("login.jsf")) {
rp.sendRedirect(rq.getContextPath() + "/login.jsf");
} else {
try {
chain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void destroy() {
}
public void init(FilterConfig config) throws ServletException {
}
}
Rafael Rocha
Curtidas 0
Respostas
Vanessa Fortes
06/02/2013
Já me deparei com este problema, mas quando eu fechava meu navegador e abria novamente não acessava a nenhuma página sem estar logado.
Faça esse teste e veja se funciona, porque ai não é problema do filter, é nas politicas de privacidade do navegador.
Faça esse teste e veja se funciona, porque ai não é problema do filter, é nas politicas de privacidade do navegador.
GOSTEI 0