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

Control de Usuario 3 capas!!!!

Estas en el tema de Control de Usuario 3 capas!!!! en el foro de .NET en Foros del Web. Hola que tal amigos aqui de nuevo con otro pequeño problemita. Bueno lo que me falta es poder validar si un usuario esta registrado en ...
  #1 (permalink)  
Antiguo 04/07/2013, 09:55
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años
Puntos: 1
Información Control de Usuario 3 capas!!!!

Hola que tal amigos aqui de nuevo con otro pequeño problemita.
Bueno lo que me falta es poder validar si un usuario esta registrado en la BD; luego que verifique que cargue el menuprincipal. Estoy desarrollando en vb.net2008 y sql2005

PROCEDIMIENTO ALMACENADO:
Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[acceso_user]
  2.     @nusuario VARCHAR(35),
  3.     @nclave VARCHAR(32),
  4.     @nidtipou INT,
  5.     @nmsg AS VARCHAR(500) OUTPUT
  6. AS
  7. BEGIN
  8.     SET NOCOUNT ON;
  9.     BEGIN Tran ingreso_user
  10.     BEGIN Try
  11.         DECLARE @C AS INT
  12.             BEGIN
  13.                 SELECT @C=COUNT(u.iduser) FROM usuario u
  14.                 WHERE u.usuario=@nusuario AND u.clave=@nclave AND
  15.                 u.estado='True' AND idtipou=@nidtipou
  16.                 IF @C>0
  17.                     BEGIN
  18.                         SET @nmsg = 'Bienvenido al sistema '+' ' +@nusuario +'. '                      
  19.                     END
  20.                 IF @C=0 OR @C=NULL
  21.                     BEGIN
  22.                         SET @nmsg = 'No tienes acceso al sistema.'
  23.                     END
  24.             --BREAK
  25.             END
  26.         COMMIT TRAN ingreso_user
  27.     END try
  28.     BEGIN Catch
  29.         SET @nmsg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(555), ERROR_LINE() ) + '.'
  30.         ROLLBACK TRAN ingreso_user
  31.     END Catch
  32. END

AHORA LAS CAPAS VB.NET 2008
CAPA ACCESO DATOS

CLASE CONEXIONAD

Código vb:
Ver original
  1. Imports System.Data.SqlClient
  2. imports System.Configuration
  3. Public Class ConexionAD
  4.     Private Conexion As String
  5.     Public Sub New()
  6.         Try
  7.             Conexion = ConfigurationManager.ConnectionStrings("CadenaConexion").ConnectionString.ToString()
  8.         Catch ex as Exception
  9.             MsgBox(ex.Message)
  10.         End Try
  11.     End Sub
  12.     Public Function abrir() as SqlConnection
  13.         'Dim cCon as SqlConnection =New SqlConnection(CadenaConexion)
  14.         'cCon="CadenaConexion="+ CadenaConexion + ""
  15.         'conexion=New SqlConnection(cCon)
  16.         dim cCon as New SqlConnection(conexion)
  17.         Try
  18.             cCon.Open()
  19.             Return cCon
  20.         Catch ex As Exception
  21.             MsgBox(ex.Message, MsgBoxStyle.Critical,ex.Source)
  22.         End Try
  23.     End Function

CLASE TIPOUSUARIOAD
Código vb:
Ver original
  1. 'Esto no lo agregue por motivos de que me pase del límite de caracteres

CLASE USUARIOAD
Código vb:
Ver original
  1. Imports System.Data.SqlClient
  2. Imports System.Data.SqlTypes
  3. Imports EntidadNegocio
  4. Public Class UsuarioAD
  5.     Private conn As New SqlConnection
  6.     Private comando As New SqlCommand
  7.     #Region "Cadena de conexion"
  8.     Public Sub New()
  9.         Dim Objconexion As New ConexionAD
  10.         conn = Objconexion.abrir
  11.         comando.Connection=conn
  12.     End Sub
  13.     #End Region
  14.     #Region "Función convertir datos"
  15.     Private Shared Function ConvertirDatosUsu(ByVal reader As IDataReader) As UsuarioEN
  16.          Dim user As New UsuarioEN
  17.          user.iduser = Convert.ToInt32(reader(0))
  18.          user.dni=LTrim(RTrim(Convert.ToString(reader(1))))
  19.          user.ape_nom=LTrim(RTrim(Convert.ToString(reader(2))))
  20.          user.usuario = LTrim(RTrim(Convert.ToString(reader(3))))
  21.          user.clave = LTrim(RTrim(Convert.ToString(reader(4))))
  22.          user.email = LTrim(RTrim(Convert.ToString(reader(5))))
  23.          user.telefono = LTrim(RTrim(Convert.ToString(reader(6))))
  24.          user.estado= LTrim(RTrim(Convert.ToString(reader(7))))
  25.          user.nombretipo= LTrim(RTrim(Convert.ToString(reader(8))))
  26.         Return user
  27.     End Function
  28.     #End Region
  29. #Region "Función acceso al sistema"
  30.     Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN)
  31.         Try
  32.             comando.Parameters.Clear()
  33.             comando.CommandType = CommandType.StoredProcedure
  34.             comando.CommandText = "acceso_user"
  35.  
  36.             Dim _usuario As New SqlParameter("@nusuario", SqlDbType.VarChar, 35)
  37.             _usuario.Value = ObjUsuarioEN.usuario
  38.             _usuario.Direction = ParameterDirection.Input
  39.             comando.Parameters.Add(_usuario)
  40.  
  41.             Dim _clave As New SqlParameter("@nclave", SqlDbType.VarChar, 32)
  42.             _clave.Value = ObjUsuarioEN.clave
  43.             _clave.Direction = ParameterDirection.Input
  44.             comando.Parameters.Add(_clave)
  45.  
  46.             Dim _idtipou As New SqlParameter("@nidtipou", SqlDbType.Int)
  47.             _idtipou.Value = ObjUsuarioEN.idtipou
  48.             _idtipou.Direction = ParameterDirection.Input
  49.             comando.Parameters.Add(_idtipou)
  50.  
  51.             Dim _nmsg As New SqlParameter("@nmsg", SqlDbType.VarChar, 400)
  52.             _nmsg.Direction = ParameterDirection.Output
  53.             comando.Parameters.Add(_nmsg)
  54.             Dim nmensaje As String
  55.  
  56.             comando.ExecuteNonQuery()
  57.             nmensaje = Convert.ToString(_nmsg.Value)
  58.             MsgBox(nmensaje)
  59.             conn.ClearAllPools()
  60.         Catch ex As Exception
  61.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  62.         Finally
  63.             comando.Parameters.Clear()
  64.             conn.Close()
  65.             conn.ClearAllPools()
  66.             conn = Nothing
  67.         End Try
  68.     End Function
  69. #End Region
  70. End Class

CAPA ENTIDADNEGOCIO

CLASE TIPOUSUARIOEN
Código vb:
Ver original
  1. 'Esto no lo agregue por motivos de que me pase del límite de caracteres

CLASE USUARIOEN
'Esto no lo agregue por motivos de que me pase del límite de caracteres
[/HIGHLIGHT]

2.-CAPA LOGICANEGOCIO

CLASE TIPOUSUARIOLN
Código vb:
Ver original
  1. Imports AccesoDatos
  2. Imports EntidadNegocio
  3. Public Class TipoUsuarioLN
  4.     private ObjTipoUsuarioAD as TipoUsuarioAD
  5.     Public Sub New()
  6.         ObjTipoUsuarioAD= New TipoUsuarioAD
  7.     End Sub
  8.     #Region "Establecer conexión con la función listado"
  9.     Public Function listatipousu() As List(Of TipoUsuarioEN)
  10.         Return ObjTipoUsuarioAD.listatipousu()
  11.     End Function
  12.     #End Region
  13. End Class

CLASE USUARIOLN
Código vb:
Ver original
  1. Imports AccesoDatos
  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 Insertar_Usuario"
  9.     Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN)
  10.         Return ObjUsuarioAD.Acceso_Usuario(ObjUsuarioEN)
  11.     End Function
  12. #End Region

3.- CAPA PRESENTACION

FORMULARIO LOGIN
Código vb:
Ver original
  1. Imports EntidadNegocio
  2. Imports LogicaNegocio
  3. Public Partial Class login
  4.     Public Sub New()
  5.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  6.         Me.InitializeComponent()
  7.         ' TODO : Add constructor code after InitializeComponents
  8.         '
  9.    End Sub
  10.     Public Shared UserLogin As String
  11.     Private Objuser As String
  12.     Private ObjUsuarioEN As UsuarioEN
  13.     Private ObjUsuarioLN As UsuarioLN
  14.     Private ObjTipoUsuarioEN As TipoUsuarioEN
  15.     Private ObjTipoUsuarioLN As TipoUsuarioLN
  16.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
  17.         Me.Close()
  18.     End Sub
  19.     Private Sub BtnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click
  20.         Try
  21.             Dim valor As String = CStr(cboxTipoUser.SelectedValue)
  22.             If (txtlogin.Text = "") Then
  23.                 MsgBox("Ingrese el nombre de Usuario", MsgBoxStyle.Information, "Mensaje")
  24.                 txtlogin.Focus()
  25.                 Exit Sub
  26.             End If
  27.             If (txtclave.Text = "") Then
  28.                 MsgBox("Ingrese la clave para el Usuario", MsgBoxStyle.Information, "Mensaje")
  29.                 txtclave.Focus()
  30.                 Exit Sub
  31.             End If
  32.             If (cboxTipoUser.SelectedIndex.Equals(-1)) Then
  33.                 MsgBox("Por Seleccione el tipo de Usuario", MsgBoxStyle.Information, "Mensaje")
  34.                 cboxTipoUser.Focus()
  35.                 Exit Sub
  36.             End If
  37.  
  38.             ObjUsuarioEN = New UsuarioEN
  39.             ObjUsuarioLN = New UsuarioLN
  40.             ObjUsuarioEN.usuario = LTrim(RTrim(txtlogin.Text))
  41.             ObjUsuarioEN.clave = LTrim(RTrim(txtclave.Text))
  42.             ObjUsuarioEN.idtipou = LTrim(RTrim(valor))
  43.             ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  44.             'PUSE ESTO PARA VER SI FUNCA PERO NO LO HACE
  45.            UserLogin = Convert.ToString(ObjUsuarioEN.usuario)
  46.             '
  47.            Objuser = ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  48.             'AQUI EL PROBLEMA NO SE COMO VALIDAR
  49.            If (UserLogin = Objuser) Then
  50.                 MenuPrincipal.Show()
  51.                 Me.Hide()
  52.             End If
  53.         Catch ex As Exception
  54.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  55.         End Try
  56.     End Sub
  57. End Class
  #2 (permalink)  
Antiguo 04/07/2013, 14:35
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años
Puntos: 1
Respuesta: Control de Usuario 3 capas!!!!

Alguien que me pueda indicar???
  #3 (permalink)  
Antiguo 05/07/2013, 08:34
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años
Puntos: 1
Respuesta: Control de Usuario 3 capas!!!!

Necesito ayuda estimado...
  #4 (permalink)  
Antiguo 05/07/2013, 09:29
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Control de Usuario 3 capas!!!!

Hola junior1920,

No debiste complicarte en el procedimiento, pudiste simplemente jalar el conteo(COUNT) sin necesidad de complicar a la BD en arrojar mensajes. Y en base al número que botaba tu SP en tu aplicación validar si el número que mostraba era > ó = a "0" para que le permitas ingresar a tus sistema. Saludos! .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 05/07/2013, 11:00
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años
Puntos: 1
Respuesta: Control de Usuario 3 capas!!!!

Estimado modifique el procediemiento si me puedes indicar como lo haria...

Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[acceso_user]
  2.     @nusuario VARCHAR(35),
  3.     @nclave VARCHAR(32),
  4.     @nidtipou INT
  5. AS
  6. BEGIN
  7.     DECLARE @C AS INT
  8.         BEGIN
  9.             SELECT @C=COUNT(u.iduser) FROM usuario u
  10.             WHERE u.usuario=@nusuario AND u.clave=@nclave AND
  11.             u.estado='True' AND idtipou=@nidtipou
  12.             IF @C>0
  13.                 BEGIN
  14.                     RETURN 1
  15.                 END
  16.             IF @C=0 OR @C=NULL
  17.                 BEGIN
  18.                     RETURN 0
  19.                 END
  20.                
  21.         --BREAK
  22.         END
  23. END

Última edición por junior1920; 05/07/2013 a las 11:00 Razón: Falto el create
  #6 (permalink)  
Antiguo 05/07/2013, 11:21
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: Control de Usuario 3 capas!!!!

Buen día junior1920,

Perfecto, ahora solamente tienes que jalar el resultado de ese SP y compararlo .

En tu clase CLASE USUARIOAD le dices que la función Acceso_Usuario es String :

Código vb:
Ver original
  1. Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN) As String
  2.         Try
  3.             comando.Parameters.Clear()
  4.             comando.CommandType = CommandType.StoredProcedure
  5.             comando.CommandText = "acceso_user"
  6.  
  7.             Dim _usuario As New SqlParameter("@nusuario", SqlDbType.VarChar, 35)
  8.             _usuario.Value = ObjUsuarioEN.usuario
  9.             _usuario.Direction = ParameterDirection.Input
  10.             comando.Parameters.Add(_usuario)
  11.  
  12.             Dim _clave As New SqlParameter("@nclave", SqlDbType.VarChar, 32)
  13.             _clave.Value = ObjUsuarioEN.clave
  14.             _clave.Direction = ParameterDirection.Input
  15.             comando.Parameters.Add(_clave)
  16.  
  17.             Dim _idtipou As New SqlParameter("@nidtipou", SqlDbType.Int)
  18.             _idtipou.Value = ObjUsuarioEN.idtipou
  19.             _idtipou.Direction = ParameterDirection.Input
  20.             comando.Parameters.Add(_idtipou)
  21.  
  22.             Dim _nmsg As New SqlParameter("@nmsg", SqlDbType.VarChar, 400)
  23.             _nmsg.Direction = ParameterDirection.Output
  24.             comando.Parameters.Add(_nmsg)
  25.             Dim nmensaje As String
  26.  
  27.             Dim resultado As String
  28.             resultado = comando.ExecuteScalar().ToString()
  29.             nmensaje = Convert.ToString(_nmsg.Value)
  30.             'MsgBox(nmensaje)
  31.            conn.ClearAllPools()
  32.             return resultado
  33.         Catch ex As Exception
  34.             'MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  35.            return String.Empty()
  36.         Finally
  37.             comando.Parameters.Clear()
  38.             conn.Close()
  39.             conn.ClearAllPools()
  40.             conn = Nothing
  41.         End Try
  42.     End Function

Luego en tu FORMULARIO LOGIN, en base al resultado que te traiga la funcion anterior validarlo :

Código vb:
Ver original
  1. Private Sub BtnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click
  2.         Try
  3.             Dim valor As String = CStr(cboxTipoUser.SelectedValue)
  4.             If (txtlogin.Text = "") Then
  5.                 MsgBox("Ingrese el nombre de Usuario", MsgBoxStyle.Information, "Mensaje")
  6.                 txtlogin.Focus()
  7.                 Exit Sub
  8.             End If
  9.             If (txtclave.Text = "") Then
  10.                 MsgBox("Ingrese la clave para el Usuario", MsgBoxStyle.Information, "Mensaje")
  11.                 txtclave.Focus()
  12.                 Exit Sub
  13.             End If
  14.             If (cboxTipoUser.SelectedIndex.Equals(-1)) Then
  15.                 MsgBox("Por Seleccione el tipo de Usuario", MsgBoxStyle.Information, "Mensaje")
  16.                 cboxTipoUser.Focus()
  17.                 Exit Sub
  18.             End If
  19.  
  20.             ObjUsuarioEN = New UsuarioEN
  21.             ObjUsuarioLN = New UsuarioLN
  22.             ObjUsuarioEN.usuario = LTrim(RTrim(txtlogin.Text))
  23.             ObjUsuarioEN.clave = LTrim(RTrim(txtclave.Text))
  24.             ObjUsuarioEN.idtipou = LTrim(RTrim(valor))
  25.             'ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  26.            ''PUSE ESTO PARA VER SI FUNCA PERO NO LO HACE
  27.            'UserLogin = Convert.ToString(ObjUsuarioEN.usuario)
  28.            '
  29.            Dim resultado_final As String
  30.             resultado_final = ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  31.             ''AQUI EL PROBLEMA NO SE COMO VALIDAR
  32.            If Not (String.IsEmpty(resultado_final)) Then
  33.                 If (Convert.ToInt32(resultado_final) = 1) Then              
  34.                     MenuPrincipal.Show()
  35.                     Me.Hide()
  36.                 End If
  37.             End If
  38.         Catch ex As Exception
  39.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  40.         End Try
  41.     End Sub

Sorry si sale algún error pero no estoy desde una pc que VS, espero que logres comprender lo que hize. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: control, usuario
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 14:01.