Ver Mensaje Individual
  #20 (permalink)  
Antiguo 20/05/2009, 14:10
Avatar de saman0suke
saman0suke
 
Fecha de Ingreso: abril-2009
Mensajes: 180
Antigüedad: 15 años
Puntos: 3
Respuesta: ¿Como restringir a un pagina JSP segun el nivel de usuario?

Ya lo hice de esa manera y no pasa nada,es como si no hiciera la validacion, tomando el trozo de codigo que Drac94 recomendo he logrado hacer la validacion justo al momento de loguearte redirigiendo a varias paginas segun lo decida, sin embargo, me gustaria tambien que al estar logueado en el sistema, al dar click sobre una pagina JSP no autorizada hiciera la validacion y eso no funciona, este es el ultimo codigo que manejo, disculpen las molestias, y si en algun momento no me es explicar,es que recien aprendo en JAVA, gracias :)


login.java
Código PHP:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.sql.*;
import conexion.conexionbd;

public class 
login extends HttpServlet{

   public 
void doPost(HttpServletRequest requestHttpServletResponse response)
                                   
throws ServletException,IOException{
      
response.setContentType("text/html");
      
PrintWriter out response.getWriter();

      
String lognombre="";
      
String logclave="";
      
String strQuery"";
      
PreparedStatement instruccion=null;
      
Connection con conexionbd.getConexion();
      
ResultSet resultado=null;
      
HttpSession session request.getSession(true);

      try {
        if(
request.getParameter("NOMBRE")!=null &&
         
request.getParameter("NOMBRE")!="" && request.getParameter("CLAVE")!=null &&
         
request.getParameter("CLAVE")!="")
        {
        
lognombre request.getParameter("NOMBRE").toString();
        
logclave request.getParameter("CLAVE").toString();
        
strQuery="select * from usuario where nombre='"+lognombre+"' and  clave='"+logclave+"'";
           
System.out.println(strQuery);
          
instruccion con.prepareStatement(strQuery);
          
resultado instruccion.executeQuery(strQuery);
          
int count=0;
          while(
resultado.next())
          {

            
session.setAttribute("nombre",resultado.getString(2));
            
session.setAttribute("id_nivel",resultado.getInt(5));
            
count++;
          }

          if(
count>&& (session.getAttribute("id_nivel")).equals(1))
          {
            
response.sendRedirect("../principal.jsp");
          }

          if(
count>&& (session.getAttribute("id_nivel")).equals(2))
          {
            
response.sendRedirect("../principal.jsp");
          }

          if(
count>&& (session.getAttribute("id_nivel")).equals(3))
          {
            
response.sendRedirect("../principal3.jsp");
          }

          else
          {
            
response.sendRedirect("../error.jsp");
          }

        }

        
System.out.println("Conectado a la base de datos");

        
con.close();
        
System.out.println("Desconectado de la base de datos");
      } catch (
Exception e) {
      
e.printStackTrace();
      }
  }

esta es la pagina que haria la validacion de nivel de acceso:

principal.jsp
Código PHP:
<%

if(
session.getAttribute("nombre") ==null) {
    
//El usuario no esta logeado, haces lo que corresponda...

response.sendRedirect("../error.jsp");
}

if(
session.getAttribute("id_nivel").equals(1))  {
    
//El usuario no esta logeado, haces lo que corresponda...

response.sendRedirect("../principal.jsp");
}
%> 
Supongo que algo tendra que ver con que ya estoy validando el usuario por nivel al momento del login, pero al menos si lo hago asi, puedo decirles a los usuarios adonde dirigirse, pero necesito que estando dentro del sistema, el usuario tenga acceso a algunas paginas y no a todas y para eso debo validarlo tambien en las JSP, espero puedan ayudarme, y muchas gracias como siempre por todo :D