Olá pessoal. Mais uma vez eu venho a vcs procurar ajuda na implementação de regra de validação, de forma a bloquear o acesso à minhas jsp's via URL.
Bom, eu estive tentando implementar um PhaserListener, e me deparei que o meu código está muito feio (acho normal pra quem está aprendendo agora...). Mas vamos lá.
Estou tentando criar um sistema em java, usando um banco em postgresql e hibernate. Estive pensando que eu poderia criar uma regra de restrição de acesso ao banco caso o usuário não estivesse logado e tentasse acessar as páginas do sistema via URL.
Minhas classes de regra de conexão são essas:
package br.gov.rr.setrabes.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.hibernate.Session;
public class LoginDAO {
String login;
String senha;
String nivel;
String status;
public LoginDAO() {
}
public LoginDAO(Session currentSession) {
}
public boolean getCheca(String login, String senha, String nivel,
String status) {
boolean ok = false;
try {
Class.forName("org.postgresql.Driver").newInstance();
System.out.println("DRIVER CARREGADO");
} catch (Exception e) {
System.out.println("driver nao carregado");
}
try {
String sql = "SELECT * from Usuario where login=? AND senha=? AND nivel=?";
Connection c = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/mogmo", "postgres",
"postgres");
PreparedStatement pstm = c.prepareStatement(sql);
pstm.setString(1, login);
pstm.setString(2, senha);
pstm.setString(3, nivel);
ResultSet rs = pstm.executeQuery();
System.out.println("CONEXAO ESTABELECIDA");
//podem perceber que abaixo estou tentando fazer uma validação de acesso, que infelizmente não funcionou...
if (!rs.getString("login").isEmpty()
&& rs.getString("login") != null)
if (rs.next() && !rs.getString("login").isEmpty()
&& rs.getString("login") != null
&& rs.getString("login").equals(login)
&& rs.getString("senha").equals(senha)
&& rs.getString("nivel").equals(nivel)) {
ok = true;
System.out.println("Usuario carregado");
} else {
ok = false;
rs.close();
c.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
status = "erro sql:" + ex.getMessage();
}
return ok;
}
public String setLogin() {
return login;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNivel() {
return nivel;
}
public void setNivel(String nivel) {
this.nivel = nivel;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
package br.gov.rr.setrabes.handler;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import org.hibernate.Session;
import br.gov.rr.setrabes.dao.Dao;
import br.gov.rr.setrabes.dao.LoginDAO;
import br.gov.rr.setrabes.estrutura.Login;
import br.gov.rr.setrabes.estrutura.Usuario;
import br.gov.rr.setrabes.util.HibernateUtil;
public class LoginHandler {
private LoginDAO loginDAO = new LoginDAO();
private Login LO = new Login();
private Boolean logado = new Boolean(false);
public LoginHandler() {
}
public Boolean isLogado() {
return this.logado;
}
public void setLogado(Boolean logado) {
this.logado = logado;
}
public Login getLO() {
return LO;
}
public void setLO(Login LO) {
this.LO = LO;
}
public String login() throws NoSuchAlgorithmException {
System.out.println("login= " + LO.getLogin());
System.out.println("senha= " + LO.getSenha());
//aqui abaixo, estou tentando implementar uma regra de acessos bem simples, baseada en usuario, senha e nível de acessos.
boolean ok = loginDAO.getCheca(LO.getLogin(), LO.getSenha(), "1",
"logado");
if (ok == true) {
System.out.println("USUARIO LOGADO COM SUCESSO");
return "ok";
}
boolean admin = loginDAO.getCheca(LO.getLogin(), LO.getSenha(), "2",
"logado");
if (admin == true) {
System.out.println("ADMIN LOGADO COM SUCESSO");
return "admin";
} else
System.out.println("ACESSO INVÁLIDO");
return "erro";
}
public List<Usuario> getUsuarios() {
System.out.println("carregando usuarios ...");
Session session = HibernateUtil.currentSession();
Dao<Usuario> dao = new Dao<Usuario>(session, Usuario.class);
return dao.list();
}
}
E ae pessoal, o que vcs acham?? Eu posso utilizar todas as regras numa classe só? Como eu posso de forma mais fácil implementar uma validação de usuário na sessão, de forma a proibir o acesso às jsp's via URL?
Agradeço a colaboração de todos.