Sessão de Usuário com Struts

1 resposta
J

Ola Pessoal,

Seguinte alguém sabe me dizer como manter um sessão de usuário em um sistema?

Tenho uma aplicação feita que na hora em que logo a sessão aparece legal depois que acesso outra pagina do sistema a sessão cai se disfaz, retornando sem sessão o codigo na pagina segue abaixo:

<%if (session.getAttribute("autorizado") == null){ %>
      Para efetuar o Login Clique
      <html:link action="/viewsignin">aqui</html:link>
      <%}else{%>
      Seja Bem Vindo ! <%=Login.getNome()%> <a href='<% request.getSession().invalidate();%>'>Sair</a>
      <%}%>

eis o codigo da classe que faz a autenticação:

package net.jspnet.internet.security;

import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.servlet.http.*;
import net.jspnet.internet.businessobjects.view.UserView;
import net.jspnet.internet.businessobjects.*;
import org.apache.struts.action.*;
/**
 * @author wajunior
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */ 
public class Login extends Action {
	
	private Connection con=null;
	Statement stmt = null;
	ResultSet rs = null;
	static String nome;
	
	private Connection getConnection(){
				try {
					Class.forName("com.mysql.jdbc.Driver");
					con = DriverManager.getConnection("jdbc:mysql://localhost:3306/users?user=root&password=root&useUnicode=true");
				} catch (java.lang.ClassNotFoundException e) {
					System.err.print("ClassNotFoundException: "+ e.getMessage());
				}catch (java.sql.SQLException se) {
					System.err.print("SQLException: " + se.getMessage());
				}catch(Exception e){
					System.err.println("Exception Encountered: "+  e.getMessage());
					e.printStackTrace();
				}
				return con;
		  }		                
		  
//	public LinkedList getUserList() throws SQLException {
	public boolean ehValido(User user) throws SQLException{
		
		UserView view = null;
		PreparedStatement stmt = null;
		  con = getConnection();	  
		  stmt = con.prepareStatement("select username from user where email = ? and password = ?");	
		  stmt.setString(1, user.getAddress());
		  stmt.setString(2, user.getPassword());
		  ResultSet rs = stmt.executeQuery();
		  boolean valido = rs.next();
		//  if (rs.next()){
			  nome = rs.getString("username");
			//  }
		  rs.close();
		  stmt.close();

	 return valido;

	
 }
 
 public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response)
	  throws Exception{
	 	
     LoginForm formulario = (LoginForm) form;
     User user = formulario.getUser();
     HttpSession session = request.getSession();
     session.setAttribute("autorizado",user);
		 if (!ehValido(user)){ 
			 return map.findForward("erro");
		 }else{
			 return map.findForward("ok");
		 }
	  }
	  
	  
	public static String getNome(){return nome;}

}

Alguém pode me ajudar e ver o que esta errado ou faltando ?

1 Resposta

M

opa,

Dúvidas de struts, nada melhor do que postar no fórum de frameworks! :joia:

sugestão, pegue este objeto da sessão e valide apenas se ele é do tipo Usuario, não há necessidade de ficar checando isto no banco de dados a todo momento.

:okok:

Criado 22 de agosto de 2006
Ultima resposta 23 de ago. de 2006
Respostas 1
Participantes 2