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

Problema con login vb.net!!!

Estas en el tema de Problema con login vb.net!!! en el foro de .NET en Foros del Web. Hola amigos nuevamente aqui con un problema: Estoy haciendo un modulo de control de acceso(usuario y clave) ya cree el procedimiento o la función y ...
  #1 (permalink)  
Antiguo 30/06/2012, 06:14
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Exclamación Problema con login vb.net!!!

Hola amigos nuevamente aqui con un problema:
Estoy haciendo un modulo de control de acceso(usuario y clave)
ya cree el procedimiento o la función y quedo así:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION user_acceso(_logacceso CHARACTER,_clave CHARACTER)
  2.   RETURNS SETOF "public"."usuario" AS
  3. $BODY$
  4. DECLARE
  5. _select usuario;
  6. _user CHARACTER(15);
  7. _clav CHARACTER(32);
  8. BEGIN
  9. SELECT INTO _user logacceso FROM usuario WHERE logacceso=_logacceso;
  10. SELECT INTO _clav clave FROM usuario WHERE clave=_clave AND logacceso=_logacceso;
  11. IF _user = _logacceso THEN
  12.  IF _clav = _clave THEN
  13.     FOR _select IN SELECT * FROM usuario WHERE logacceso=_logacceso AND clave=_clave
  14.     loop
  15.      RETURN NEXT _select;
  16.     END loop;
  17.  ELSE
  18.     RAISE EXCEPTION 'Clave incorrecta';
  19.     RETURN;
  20.     ROLLBACK;
  21.  END IF;
  22. ELSE
  23. RAISE EXCEPTION 'Usuario %',_logacceso||' no está registrado';-- || para concatenar
  24.  RETURN;
  25.  ROLLBACK;
  26. END IF;
  27. END;$BODY$
  28.   LANGUAGE plpgsql VOLATILE
  29.   COST 100;

Ahora esto lo estoy trabajando en 3 capas que son:
I.-CAPA ACCESODATOS
1.1.- CLASE:CategoriaAD

Código vb:
Ver original
  1. Imports Npgsql
  2. Imports NpgsqlTypes
  3. imports EntidadNegocio
  4. Public Class UsuarioAD
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private conn As New NpgsqlConnection
  10.     Private comando As New NpgsqlCommand
  11.     #Region "Cadena de conexion"
  12.     Public Sub New()
  13.         Dim Objconexion As New conexion
  14.         conn = Objconexion.abrir
  15.         comando.Connection=conn
  16.     End Sub
  17.     #End Region
  18. #Region "Función para el acceso"
  19.     Public Function login(ByVal logacceso As String,Byval clave as String)'As List(Of UsuarioEN)
  20.         Dim listuser As New List(Of UsuarioEN)
  21.         Dim reader As NpgsqlDataReader
  22.         Try
  23.             conn.Close()
  24.             conn.Open()
  25.             comando.CommandType=CommandType.StoredProcedure
  26.             comando.CommandText="user_acceso"
  27.             Dim _logacceso As New NpgsqlParameter("_logacceso",NpgsqlTypes.NpgsqlDbType.Varchar)
  28.             _logacceso.Value=logacceso
  29.             _logacceso.Direction=ParameterDirection.Input
  30.             comando.Parameters.Add(_logacceso)
  31.             Dim _clave As New NpgsqlParameter("_clave",NpgsqlTypes.NpgsqlDbType.Varchar)
  32.             _clave.Value=clave
  33.             _clave.Direction=ParameterDirection.Input
  34.             comando.Parameters.Add(_clave)
  35.             reader=comando.ExecuteReader
  36.             If(reader.Read)Then
  37.             iduser=reader("idusuario").ToString()
  38.             nombres=reader("nom_ape").ToString()
  39.             UserLogin = reader("logacceso").ToString()
  40.             Else
  41.                 exit function
  42.             End If
  43.         Catch ex as Exception
  44.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  45.         Finally
  46.             conn.Close()
  47.             conn.ClearAllPools
  48.         End Try
  49.     End Function
  50.     #End Region
  51. End Class

II.- CAPA ENTIDADNEGOCIO
2.1.- CLASE: UsuarioEN


Código vb:
Ver original
  1. Public Class UsuarioEN
  2.     Private gidusuario As Integer
  3.     Private gnom_ape As String
  4.     Private glogacceso As String
  5.     Private gclave As String
  6.     Private gtelef As String
  7.     Private gcorreo As String
  8.     '--------------------------
  9.     Public Property idusuario() as Integer
  10.         Get
  11.             Return gidusuario
  12.         End Get
  13.         Set(ByVal value as Integer)
  14.             gidusuario=value
  15.         End Set
  16.     End Property
  17.     '--------------------------
  18.     Public Property nom_ape() as String
  19.         Get
  20.             return gnom_ape
  21.         End Get
  22.         Set(ByVal value as String)
  23.             gnom_ape=value
  24.         End Set
  25.     End Property
  26.     '--------------------------
  27.     Public Property logacceso() as String
  28.         Get
  29.             return glogacceso
  30.         End Get
  31.         Set(ByVal value as String)
  32.             glogacceso=value
  33.         End Set
  34.     End Property
  35.     '--------------------------
  36.     Public Property clave() as String
  37.         Get
  38.             return gclave
  39.         End Get
  40.         Set(ByVal value as String)
  41.             gclave=value
  42.         End Set
  43.     End Property
  44.     '--------------------------
  45.     Public Property telef() as String
  46.         Get
  47.             return gtelef
  48.         End Get
  49.         Set(ByVal value as String)
  50.             gtelef=value
  51.         End Set
  52.     End Property
  53.     '--------------------------
  54.     Public Property correo() as String
  55.         Get
  56.             return gcorreo
  57.         End Get
  58.         Set(ByVal value as String)
  59.             gcorreo=value
  60.         End Set
  61.     End Property   
  62. End Class

III.- CAPA LOGICANEGOCIO
3.1.- CLASE: UsuarioLN


Código vb:
Ver original
  1. Imports AccessoDatos
  2. imports EntidadNegocio
  3. Public Class UsuarioLN
  4.     Private ObjUsuarioAD As UsuarioAD
  5.     Public Sub New()
  6.         ObjUsuarioAD=New UsuarioAD
  7.     End Sub
  8. #Region "Establecer conexion con la función login"
  9.     Public Function login(ByVal logacceso As String, ByVal clave As String) 'As List(Of UsuarioEN)
  10.         return ObjUsuarioAD.login(logacceso,clave)
  11.     End Function
  12.     #End Region
  13.    
  14. End Class

IV.- CAPA PRESENTACION
4.1.- FORM: login


Código vb:
Ver original
  1. Imports System.Data
  2. Imports EntidadNegocio
  3. imports LogicaNegocio
  4. Public Partial Class login
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private ObjUsuarioEN As UsuarioEN
  10.     Private ObjUsuarioLN As UsuarioLN
  11.     Public Sub New()
  12.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  13.         Me.InitializeComponent()
  14.        
  15.         '
  16.         ' TODO : Add constructor code after InitializeComponents
  17.         '
  18.  
  19.     End Sub
  20.     #Region "Evento click del boton aceptar"
  21.     Sub BtnOKClick(sender As Object, e As EventArgs)
  22.         ObjUsuarioEN=New UsuarioEN
  23.         ObjUsuarioLN=New UsuarioLN
  24. '       ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text))
  25. '       ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text))
  26. 'ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text)))
  27.          If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
  28.                 menuprincipal.show()
  29. Else
  30.         txtUSER_NAME.Focus
  31. End If
  32. End Sub
  33. #End Region
  34. End Class

Y es esta parte la cual quiero condicionar para que si los datos son verdaderos me llame el menuprincipal y si no que se mantenga el pulsor en el txt

Código vb:
Ver original
  1. If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
  2.                 menuprincipal.show()
  3. Else
  4.         txtUSER_NAME.Focus
  5. End If
  #2 (permalink)  
Antiguo 30/06/2012, 10:47
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con login vb.net!!!

Hola alguna idea como puedo hacer la condición para ver si los datos son correctos y luego pueda llamar al formulario menuprincipal
  #3 (permalink)  
Antiguo 30/06/2012, 14:36
Avatar de MaLkAvIaN_NeT  
Fecha de Ingreso: marzo-2005
Ubicación: trujillo
Mensajes: 141
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Problema con login vb.net!!!

la función es la que tiene que retornarte un BIT, la cual tu puedes leer con un execute escalar, o con un simple select.
__________________
www.tecfactory.com
  #4 (permalink)  
Antiguo 30/06/2012, 15:24
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Pregunta Respuesta: Problema con login vb.net!!!

Cita:
Iniciado por MaLkAvIaN_NeT Ver Mensaje
la función es la que tiene que retornarte un BIT, la cual tu puedes leer con un execute escalar, o con un simple select.
Umm y como es que lo podría hacer por que solo quiero hacer la sentencia si se ejecuto correctamente el procedimiento llame al menuprincipal y si no quede ahi numas con un text en focus
  #5 (permalink)  
Antiguo 30/06/2012, 18:55
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 1 mes
Puntos: 61
Respuesta: Problema con login vb.net!!!

Es aplicacion windows o web.

No se si te eh entendido mal lo que quieres es que si se logea correctamente le muestre el menu en el mismo formulario o que te mande al formulario principal?

Porque eso seria lo ideal que tengas un formulario de login y si se logea correctamente te mande al formulario principal.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #6 (permalink)  
Antiguo 30/06/2012, 19:45
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con login vb.net!!!

Claro es una aplicación de windows y lo trabajo en capas, lo trabajo con function en postgres
y la función o procedure esta bien.
Ahora el problema esssss que cuando por ejemplo si lo dejo así el código en el formulario login:
Código vb:
Ver original
  1. Imports System.Data
  2. Imports EntidadNegocio
  3. imports LogicaNegocio
  4. Public Partial Class login
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private ObjUsuarioEN As UsuarioEN
  10.     Private ObjUsuarioLN As UsuarioLN
  11.     Public Sub New()
  12.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  13.        Me.InitializeComponent()
  14.        
  15.         '
  16.        ' TODO : Add constructor code after InitializeComponents
  17.        '
  18.  
  19.     End Sub
  20.     #Region "Evento click del boton aceptar"
  21.     Sub BtnOKClick(sender As Object, e As EventArgs)
  22.         ObjUsuarioEN=New UsuarioEN
  23.         ObjUsuarioLN=New UsuarioLN
  24. '       ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text))
  25. '       ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text))
  26. ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text)))
  27. menuprincipal.show()
  28. End Sub
  29. #End Region
  30. End Class

Ingreso los datos y si esos datos los ingreso erroneamente me va a llamar al formulario menu; es por eso que le quiero hacer una condicional y estaba pensando algo así:

Código vb:
Ver original
  1. Imports System.Data
  2. Imports EntidadNegocio
  3. imports LogicaNegocio
  4. Public Partial Class login
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private ObjUsuarioEN As UsuarioEN
  10.     Private ObjUsuarioLN As UsuarioLN
  11.     Public Sub New()
  12.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  13.        Me.InitializeComponent()
  14.        
  15.         '
  16.        ' TODO : Add constructor code after InitializeComponents
  17.        '
  18.  
  19.     End Sub
  20.     #Region "Evento click del boton aceptar"
  21.     Sub BtnOKClick(sender As Object, e As EventArgs)
  22.         ObjUsuarioEN=New UsuarioEN
  23.         ObjUsuarioLN=New UsuarioLN
  24. '       ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text))
  25. '       ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text))
  26. 'ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text)))
  27.         If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
  28.                 menuprincipal.show()
  29. Else
  30.         txtUSER_NAME.Focus
  31. End If
  32. End Sub
  33. #End Region
  34. End Class

pero no hace nada ya intente colocar Cobj,Cbool después del if pero no me valida
además quiero poder pasar la id del usuario, el nombre de usuario,etc es por eso que mi clase UsuarioAD tiene variables públicas:
Código vb:
Ver original
  1. Public shared iduser as Integer
  2.     Public Shared nombres As String
  3.     Public Shared UserLogin As String

esas las quiero hacer que pasen al formulario menuprincipal

Última edición por junior1920; 30/06/2012 a las 20:40 Razón: agregar datos
  #7 (permalink)  
Antiguo 01/07/2012, 09:06
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con login vb.net!!!

Alguien por favor que me pueda dar una idea de como hago la condición
  #8 (permalink)  
Antiguo 02/07/2012, 06:53
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con login vb.net!!!

Aquaventus puedes indicarme que es lo que debo de hacer
  #9 (permalink)  
Antiguo 02/07/2012, 08:09
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Problema con login vb.net!!!

Hola junior1920!.
Simplemente no digas al usuario que la "contraseña incorrecta" por seguridad, solo dile "usuario o password incorrecto", para que no le hagas saber si ese usuario existe y que tenga la opcion de intentar contraseñas.
Por ejemplo puedes crear un procedure simple como este y acomodarlo a tu function que retorne el COUNT en tu postgress:
Código SQL:
Ver original
  1. CREATE PROCEDURE SP_LOGIN
  2. @NICK AS VARCHAR(50),
  3. @PWD AS VARCHAR(50)
  4. AS
  5. SELECT COUNT(*) FROM USUARIO
  6. WHERE NICK = @NICK AND PWD = @PWD
Que te devuelve la cantidad si existe o no.
En tu capa datos ejecutas tu reader y jalas la cantidad que te manda si es > 0 es porque si existe sino no existe.
Código vb:
Ver original
  1. Public Function login(ByVal logacceso As String,Byval clave as String) As Int32
  2. Dim resultado As Int32
  3. ...
  4. resultado = Convert.ToInt32(reader(0).ToString())
  5. return resultado
Y ya en tu capa presentacion :
Código vb:
Ver original
  1. #Region "Evento click del boton aceptar"
  2.     Sub BtnOKClick(sender As Object, e As EventArgs)
  3.  
  4.         ObjUsuarioLN=New UsuarioLN
  5.     If ObjUsuarioLN.login(txtUSER_NAME.Text.Trim(), txtPASSWORD.Text.Trim()) > 0 Then
  6.                 Dim miform As New menuprincipal()
  7.                 miform.Show()
  8. Else
  9.         MessageBox.Show("Usuario o contraseña incorrecta")
  10.         txtUSER_NAME.Focus
  11. End If
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #10 (permalink)  
Antiguo 04/07/2012, 06:36
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con login vb.net!!!

Aquaventus y como jalo las variables públicas que estan en UsuarioAD( me confundi al digitar y puse CategoriaAD)
Código vb:
Ver original
  1. Public shared iduser as Integer
  2. Public Shared nombres As String
  3. Public Shared UserLogin As String
  4. .
  5. .
  6. .
  7. iduser=reader("idusuario").ToString()
  8. nombres=reader("nom_ape").ToString()
  9. UserLogin = reader("logacceso").ToString()
  10. .
  11. .
  12. .
  #11 (permalink)  
Antiguo 04/07/2012, 09:31
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Problema con login vb.net!!!

Al form que vas a abrir(menuprincipal) cuando pase por el login, creale su constructor :

Código vb:
Ver original
  1. Dim id, usuario, login As String
  2.  
  3.  
  4.     Public Sub New(ByVal _id As String, ByVal _usuario As String, ByVal _login As String)
  5.  
  6.         id = _id
  7.         usuario = _usuario
  8.         login = _login
  9.  
  10.         ' This call is required by the Windows Form Designer.
  11.        InitializeComponent()
  12.  
  13.         ' Add any initialization after the InitializeComponent() call.
  14.  
  15.     End Sub

Y desde el Login solo lo llamas asi (iduser,nombres,UserLogin son las variables que declareaste):
Código vb:
Ver original
  1. Dim form As New menuprincipal(iduser, nombres,UserLogin)
  2.         form.ShowDialog()
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #12 (permalink)  
Antiguo 09/07/2012, 11:05
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Mensaje Respuesta: Problema con login vb.net!!!

Cita:
Iniciado por Aquaventus Ver Mensaje
Al form que vas a abrir(menuprincipal) cuando pase por el login, creale su constructor :

Código vb:
Ver original
  1. Dim id, usuario, login As String
  2.  
  3.  
  4.     Public Sub New(ByVal _id As String, ByVal _usuario As String, ByVal _login As String)
  5.  
  6.         id = _id
  7.         usuario = _usuario
  8.         login = _login
  9.  
  10.         ' This call is required by the Windows Form Designer.
  11.        InitializeComponent()
  12.  
  13.         ' Add any initialization after the InitializeComponent() call.
  14.  
  15.     End Sub

Y desde el Login solo lo llamas asi (iduser,nombres,UserLogin son las variables que declareaste):
Código vb:
Ver original
  1. Dim form As New menuprincipal(iduser, nombres,UserLogin)
  2.         form.ShowDialog()
Saludos!.
Aquaventus disculpa que te vuelva a molestar pero hice lo que indicastes pero la variables no toman ningún valor.
Otro punto es quie si le doy al formulario login (me.hide) no lo oculta por que hay un showdialog

Etiquetas: login, sql, windows
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 00:35.