Sistema de login

6 respostas
J

boa noite galera
estou fazerdo um trabalho e não estou conceguindo logar no sistema…
quando eu tendo logar aparece isso na saida…

select
        this_.id as id0_0_,
        this_.login as login0_0_,
        this_.senha as senha0_0_ 
    from
        admin this_ 
    where
        this_.login=? 
        and this_.senha=?
MonitorFilter::WARNING: the monitor filter must be the first filter in the chain.

mas não loga.

6 Respostas

G

A princípio esse alerta não impossibilitaria de retornar o resultado da sua consulta. Deve possuir algum outro erro… Poderia mostrar o resto do código?

J
package controller;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.view.Results;
import dao.Dao;
import model.Admin;
import generic.CurrentUser;
import util.MasterUtil;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.criterion.Restrictions;

@Resource
public class AdminController extends DefualtController{
   public AdminController(Dao dao, CurrentUser currentUser, Result result, Validator validator, HttpServletRequest request) {
        this.dao = dao;
        this.currentUser = currentUser;
        this.result = result;
        this.validator = validator;
        this.request = request;
    }

    @Path("/admin/login")
    public void login() {
        currentUser.setAdmin(null);
    }

    @Path("/admin/efetuaLogin")
    public void efetuaLogin(Admin admin) throws Exception {
        Admin aux = null;
        System.out.print(MasterUtil.md5(admin.getSenha()));
        if (currentUser.getAdmin() != null) {
            result.use(Results.logic()).redirectTo(IndexController.class).index();
        }
        if(validate(admin)){
            aux = findUsuario(admin);
            if (aux == null) {
                error("Usuário e/ou Senha inválidos!");
            }
        }
        if (!validator.hasErrors()) {
            currentUser.setAdmin(aux);
            logInfo("Login");
            result.use(Results.logic()).redirectTo(IndexController.class).principal();
        }        
        validator.onErrorUse(Results.logic()).redirectTo(AdminController.class).login();
    }

    @Path("/admin/logout")
    public void logout() {
        logInfo("Logout");        
        this.currentUser = null;
        result.use(Results.logic()).redirectTo(IndexController.class).index();
    }

    @Path("/admin/check")
    public void check() {
        logInfo("Usuário não logado");        
        error("Usuário não logado!!");
        validator.onErrorUse(Results.page()).of(AdminController.class).login();
    }

    private boolean validate(Admin admin) {
        boolean check=true;
        if (admin.getLogin().isEmpty()) {
            error("Informe o Login");
            check=false;
        }
        if (admin.getSenha().isEmpty()) {
            error("Informe a Senha");
            check=false;
        }        
        return check;
    }

    private Admin findUsuario(Admin admin) {
        try {
            admin = (Admin) dao.getSession().createCriteria(Admin.class)
            .add(Restrictions.eq("login", admin.getLogin())).add(Restrictions.eq("senha", MasterUtil.md5(admin.getSenha())))
                    .uniqueResult();
            return admin!=null && admin.getId() > 0 ? admin : null;
        } catch (Exception ex) {
            error("Erro ao localizar usuário ->" + admin.getLogin() + ". Motivo: " + ex.getLocalizedMessage());
            return null;
        }
    }
}
package controller;

import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.ValidationMessage;
import dao.Dao;
import generic.CurrentUser;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;

public class DefualtController {

    protected Dao dao;
    protected CurrentUser currentUser;
    protected Result result;
    protected Validator validator;
    protected HttpServletRequest request;
    protected ArrayList<ValidationMessage> messages = new ArrayList<ValidationMessage>();

    private String getLogInfo() {
        if (request != null) {
            return " - " + request.getRemoteAddr();
        } else {
            return "";
        }
    }

    public void logInfo(String message) {
        Logger.getLogger(this.getClass().getName()).info(message + getLogInfo());
    }

    public void logError(String message) {
        Logger.getLogger(this.getClass().getName()).error(message + getLogInfo());
    }

    public void logError(Exception e) {
        Logger.getLogger(e.getClass().getName()).error(e.getMessage() + getLogInfo());
    }

    public void success(String message) {
        addMessage(new ValidationMessage(message, "success"));
    }

    public void information(String message) {
        addMessage(new ValidationMessage(message, "information"));
    }

    public void warning(String message) {
        addMessage(new ValidationMessage(message, "warning"));
    }

    public void error(String message) {
        validator.add(new ValidationMessage(message, "error"));
    }

    public void addMessage(ValidationMessage message) {
        if (result == null) {
            logError("Result não inicializado");
        } else {
            messages.add(message);
            result.include("messages", messages);
        }
    }
}
package controller;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import generic.CurrentUser;
import javax.servlet.http.HttpServletRequest;


@Resource
public class IndexController extends DefualtController{
    public IndexController(HttpServletRequest request, Result result, CurrentUser user, Validator validator) {
		this.request = request;
		this.result = result;
		this.currentUser = user;
		this.validator = validator;                
	}

	@Path("/")
	public void index() {
                currentUser.setAdmin(null);
	}

        @Path("/index/captcha")
	public void captcha() {
	}

/*        @Path("/index/principal")
	public void principal(String captcha) {
            String msg="errado";
            String captchaSession = (String) request.getSession().getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY);
            if(captcha.equals(captchaSession)){
                msg="certo";
            }
            result.include("msg", msg);
	}*/

        @Path("/index/principal")
	public void principal() {
	}

	public void formulario() {
	}

	public void error() {
	}
}
package generic;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
import model.Admin;
import java.io.Serializable;

@Component
@SessionScoped
public class CurrentUser implements Serializable {
    private Admin admin;

    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }
}
package dao;

import br.com.caelum.vraptor.ioc.Component;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;


@Component
public class Dao<T> {
    private final Session session;

    public Dao(Session session) {
        this.session = session;
    }

    public Session getSession() {
        return session;
    }

    public void remove(Object dto) throws Exception {
        try {
            this.session.delete(dto);
        } catch (Exception e) {
            throw new Exception(e.toString());
        }
    }

    public Object salva(Object dto) throws Exception {
        try {
            dto = this.session.merge(dto);
        } catch (Exception e) {
            throw new Exception(e.toString());
        }
        return dto;
    }

    public void persiste(Object dto) throws Exception {
        try {
            this.session.persist(dto);
        } catch (Exception e) {
            throw new Exception(e.toString());
        }
    }

    public void salvaLista(ArrayList lista) throws Exception {
        try {
            for (Object dto : lista) {
                this.session.persist(dto);
            }
        } catch (Exception e) {
            throw new Exception(e.toString());
        }
    }

    public List<T> listaTudo(Class classe) {
        return this.session.createCriteria(classe).list();
    }

    public Object procura(Class classe, Long id) {
        return (Object) session.load(classe, id);
    }

    public Object get(Class classe, Long id) {
        return (Object) session.get(classe, id);
    }
}
package interceptor;

import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.ioc.RequestScoped;
import br.com.caelum.vraptor.resource.ResourceMethod;
import generic.CurrentUser;
import org.apache.log4j.Logger;

@RequestScoped
public class AccessInterceptor implements Interceptor{
    private CurrentUser user;

    public AccessInterceptor(CurrentUser user) {
        this.user = user;
    }

	

	@Override
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) {
		if (user.getAdmin() != null) {
			StringBuilder str = new StringBuilder();                        
			str.append(user.getAdmin().getLogin());
			str.append("#");
			str.append(user.getAdmin().getId());
			str.append(" - ");
			str.append(method.getResource().getType().getSimpleName());
			str.append(".");
			str.append(method.getMethod().getName());
			str.append("()");
			Logger.getLogger(AccessInterceptor.class.getName()).info(str.toString());
		}
		stack.next(method, instance);
	}

	@Override
	public boolean accepts(ResourceMethod method) {
		return true;
	}
}
package interceptor;

import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.ioc.RequestScoped;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.caelum.vraptor.view.Results;
import controller.IndexController;
import org.apache.log4j.Logger;


@RequestScoped
public class ExceptionInterceptor implements Interceptor {

    private Result result;

    public ExceptionInterceptor(Result result) {
        this.result = result;
    }

    @Override
    public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) {
        try {
            stack.next(method, instance);
        } catch (Exception e) {
            Logger.getLogger(ExceptionInterceptor.class.getName()).error(method.getResource().getType().getName() + "." + method.getMethod().getName() + "() - " + e.getMessage());
            result.use(Results.logic()).forwardTo(IndexController.class).error();
        }
    }

    @Override
    public boolean accepts(ResourceMethod method) {
        return true;
    }
}
package model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="admin")
@SequenceGenerator(name="admin_id_seq", sequenceName = "admin_id_seq", allocationSize=1)
public class Admin implements Serializable {
     @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="admin_id_seq")
    @Column(name="id", length = 30,nullable=false)
    private Long id;
    @Column(name="login", length= 30, unique=true)
    private String login;
    @Column(name="senha", length= 60)
    private String senha;
  
     public Admin() {
    }

    public Admin(Long id) {
        this.id = id;
    }

    public Admin(Long id, String login) {
        this.id = id;
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

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

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }
    
    
}
package util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MasterUtil {
    public static String md5(String senha) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        BigInteger hash = new BigInteger(1, md.digest(senha.getBytes()));
        String s = hash.toString(16);
        if (s.length() % 2 != 0) {
            s = "0" + s;
        }
        return s;
    }
}
<%@ include file="/template/header.jsp" %>
<form name="form" action="/exe/admin/efetuaLogin" method="POST">
    <table width="22%"  border="0" align="center" cellpadding="2" cellspacing="0" class="tborder">
        <tr class="tcat">
            <td colspan="2" align="left">
                <center><strong><font color="#000000">Prompt de Login</font></strong></center>
            </td>
        </tr>
        <tr bgcolor="#F5F5F5">
            <td width="26%" class="smalltext">Usuário: </td>
            <td width="74%"><input type="text" name="admin.login" class="input" value=""></td>
        </tr>
        <tr bgcolor="#F5F5F5">
            <td class="smalltext">Senha:</td>
            <td><input type="password" name="admin.senha" class="input" value=""></td>
        </tr>
        <tr bgcolor="#F5F5F5">
            <td colspan="2" ><input type="submit" name="Submit2" value="Entrar"/></td>
        </tr>
    </table>
</form>
<%@ include file="/template/footer.jsp" %>
G

No momento que vc faz o persiste(); você grava a senha no banco com o formato MD5? Em resumo, a senha está sendo salva em MD5?

J

é

G

Dae Julho, conseguiu resolver? Espero ter ajudado!

J

valeu amigo,
estou ainda quebrando a cabeça,
mas agradeço a ajuda.

Criado 20 de agosto de 2012
Ultima resposta 20 de ago. de 2012
Respostas 6
Participantes 2