Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con autorizacion de usuarios

Estas en el tema de Ayuda con autorizacion de usuarios en el foro de Java en Foros del Web. Hola a todos necesito ayuda urgente, soy principiante en esto de las aplicaciones web y necesito que la que estoy haciendo reciba el nombre de ...
  #1 (permalink)  
Antiguo 27/04/2009, 16:29
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Ayuda con autorizacion de usuarios

Hola a todos necesito ayuda urgente, soy principiante en esto de las aplicaciones web y necesito que la que estoy haciendo reciba el nombre de usuario y contraseña, que revise en la BD y si tiene nivel de usuario 1 se vaya a una página y si tiene nivel de usuario 2 se vaya a otra, porque lo que ya hice fue que valide el usuario y contraseña y si existe se vaya a la pagina principal si no se regrese a la misma página. Todo esto lo estoy manejando con Daos, Servlet, beans y jsp. Pongo mi código si alguien me puede ayudar se lo agradeceré mucho.

Este es mi dao:

package Daos;
import java.sql.*;
import beans.*;
import ConexionBD.*;
public UsuariosDAO() {
}
public Usuarios Validar(String user, String contras){
Usuarios usuario=null;
try{
Conexion conn=new Conexion();
Connection c=conn.getConexion();
String sql="select * from usuarios where Usuario=? and Contrasenia=?";
PreparedStatement ps=c.prepareStatement(sql);
ps.setString(1, user);
ps.setString(2, contras);
ResultSet res=ps.executeQuery();
if(res.next()){
usuario.setUsuario(res.getString("Usuario"));
usuario.setContrasenia(res.getString("Contrasenia" ));
usuario.setNivel_usuario(res.getInt("Nivel_usuario "));
}
usuario=new Usuarios();
res.close();
ps.close();
c.close();
}
catch(Exception e){
e.printStackTrace();
}
return usuario;
}

Este es mi Servlet:

import java.io.*;
import java.net.*;
import Daos.*;
import Servlet.*;
import beans.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Login extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user=request.getParameter("user");
String contras=request.getParameter("contrasenia");
UsuariosDAO usuariosDAO=new UsuariosDAO();
Usuarios usuario = usuariosDAO.Validar(user,contras);
if(usuario!=null){
response.sendRedirect("LoginNeoris.jsp");
}else{
response.sendRedirect("SolicitudVAlta.jsp");
}
}
Tengo una tabla en la BD en MYSQL llamada usuarios y aparte de tener usuario y contrasenia tengo la columna Nivel_usuario, ayuda por favor ya estoy desesperado
  #2 (permalink)  
Antiguo 27/04/2009, 16:58
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Ayuda con autorizacion de usuarios

pues solo cambia esto
Código PHP:
if(usuario!=null){
response.sendRedirect("LoginNeoris.jsp");
}else{
response.sendRedirect("SolicitudVAlta.jsp");

por esto
Código PHP:
if(usuario.getNivel_usuario==1l){
response.sendRedirect("paginaprincipal.jsp");
}else{
response.sendRedirect("mismapagina.jsp");

  #3 (permalink)  
Antiguo 28/04/2009, 08:14
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con autorizacion de usuarios

Ya lo intenté y me sale el siguiente error:

type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

java.lang.NullPointerException
Servlet.Login.processRequest(Login.java:34)
Servlet.Login.doPost(Login.java:57)
javax.servlet.http.HttpServlet.service(HttpServlet .java:709)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:368)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/5.5.17.

Que puede ser?
  #4 (permalink)  
Antiguo 28/04/2009, 16:07
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Ayuda con autorizacion de usuarios

y asi:

Código PHP:
if(usuario !=null && usuario.getNivel_usuario()==1){
    
response.sendRedirect("paginaprincipal.jsp");
}else{
    
response.sendRedirect("mismapagina.jsp");

  #5 (permalink)  
Antiguo 28/04/2009, 16:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Ayuda con autorizacion de usuarios

Cita:
public Usuarios Validar(String user, String contras){
Usuarios usuario=null;
.
.
.
.
usuario.setUsuario(res.getString("Usuario"));
.
.
.
usuario=new Usuarios();
Creo que el problema viene de aqui:

usuario.setUsuario(res.getString("Usuario"));

y es por que fijate en como inicializaste el usuario, que pusiste

Usuarios usuario=null;

Es decir, no lo inicializas, luego intentas asignarle valores, y luego lo inicializas (con lo que perderias lo que tuviera, si se hubiera inicializado antes, por cierto).

Lo que tendrias que poner seria

Usuarios usuario = new Usuarios();
.
.
.
usuario.setUsuario(....)



Luego, donde compruebas a donde mandar al usuario, si seria como te decia drac94

if(usuario.getNivel_usuario==1l)
response.sendRedirect("paginaprincipal.jsp");
else
response.sendRedirect("mismapagina.jsp");
  #6 (permalink)  
Antiguo 29/04/2009, 08:53
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con autorizacion de usuarios

Perdonen amigos primero muchas gracias por su paciencia y ayuda ya puse el código como me dijeron y ya no me sale el error pero ahora con cualquier dato me manda a la segunda pagina aunque tenga nivel 1 o 2 y aunque no exista no me esta validando el nivel de usuario que mas creen que podría ser.
Gracias por todo
  #7 (permalink)  
Antiguo 29/04/2009, 10:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Ayuda con autorizacion de usuarios

A que pagina te envia? A paginaprincipal.jsp o a la otra? Comprobaste cuanto vale usuario.getNivel_usuario()?
  #8 (permalink)  
Antiguo 29/04/2009, 11:01
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con autorizacion de usuarios

Me envía a mismapagina.jsp y en la base de datos tengo dos usuarios creados uno tiene nivel de usuario uno y el otro nivel de usuario dos pero con los dos me manda a la misma página
  #9 (permalink)  
Antiguo 29/04/2009, 11:58
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Ayuda con autorizacion de usuarios

Y cuanto vale usuario.getNivel_usuario()? Supongo que sera que no vale 1l. Si tienes guardado un 1 en la base de datos quita la "l" de detras del 1.

Por otra parte, cambia esto

else
response.sendRedirect(....

por

else if(usuario.getNivel_usuario() == 2)
response.sendRedirect(....

a ver si sigue mandandote ahi
  #10 (permalink)  
Antiguo 30/04/2009, 09:02
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con autorizacion de usuarios

No entiendo que pasa me sigue saliendo lo mismo, pero lo voy a ilustrar poniendo como me quedó el código para ver si me pueden hacer el favor de ayudarme un poco más

Servlet quedó así ahora:
String user=request.getParameter("user");
String contras=request.getParameter("contrasenia");
UsuariosDAO usuariosDAO=new UsuariosDAO();
Usuarios usuario = usuariosDAO.Validar(user,contras);
if(usuario != null && usuario.getNivel_usuario()==1){
response.sendRedirect("EmpleadosConsulta.jsp");
}else if(usuario != null && usuario.getNivel_usuario() == 2){
response.sendRedirect("TransferAlta.jsp");
}else{
response.sendRedirect("LoginNeoris.jsp");
}

Mi DAO:
public Usuarios Validar(String user, String contras){
Usuarios usuario= new Usuarios();
try{
Conexion conn=new Conexion();
Connection c=conn.getConexion();
String sql="select * from usuarios where Usuario=? and Contrasenia=?";
PreparedStatement ps=c.prepareStatement(sql);
ps.setString(1, user);
ps.setString(2, contras);
ResultSet res=ps.executeQuery();
if(res.next()){
usuario.setUsuario(res.getString("Usuario"));
usuario.setContrasenia(res.getString("Contrasenia" ));
usuario.setNivel_usuario(res.getInt("Nivel_usuario "));
}
usuario=new Usuarios();
res.close();
ps.close();
c.close();
}
catch(Exception e){
e.printStackTrace();
}
return usuario;
}

Tengo dos registros en mi base de datos uno de ellos tiene nivel_usuario = 1 y el otro = 2, si intento con cualquiera de los dos me manda a la pagina LoginNeoris.jsp y pongo uno que no existe y hace lo mismo
Agradezco mucho su ayuda hasta ahora y la que me sigan brindando
  #11 (permalink)  
Antiguo 30/04/2009, 09:17
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Ayuda con autorizacion de usuarios

correlo paso a paso y ve checando el valor de las variables, en especial el valor de usuario.getNivel_usuario(), por que si entra hasta el ultimo else, quiere decir que no vale ni 1 ni 2
  #12 (permalink)  
Antiguo 30/04/2009, 11:18
 
Fecha de Ingreso: abril-2009
Mensajes: 78
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con autorizacion de usuarios

Ya quedó ya se va a las páginas que le corresponde a cada usuario muchas gracias a todos los que me ayudaron, fueron una enorme ayuda muchisimas gracias.
El problema era que estaba inicializando dos veces el objeto usuarios, por eso no lo reconocia
Gracias a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:58.