locked
Nivel de acceso en un form RRS feed

  • Pregunta

  • Saludos estoy tratando de seguir el instructivo de este link:

    http://joseluisgarciab.blogspot.com/2013/07/restriccion-de-usuarios.html

    ya que necesito cargar una funcion de un menu solo para usuario administradores, pero en la linea de codigo 46 de la funcion autenticar donde dice

      46:             Usuario.NivelAcceso = tipoUsuario;

    no se de donde saca ese Usuario.NivelAcceso, ya que pensaba que era el usuario declarado en:

       8: public static bool Autenticar(string usuario, string password)

     pero esta con minúsculas y se usa ese no da acceso a la tabla para que valide el NivelAcceso de su ejemplo.

    jueves, 19 de julio de 2018 2:53

Todas las respuestas

  • Ya he resuelto la forma de llamar el nivel de acceso de la siguiente forma:

            E_Usuario objEntidad = new E_Usuario();
    
            public bool Logueo(string Usuario, string Clave)
            {
                conexion.Open();
                SqlCommand cmd = new SqlCommand("Select Tipo FROM Usuario where Usuario=@user and Clave=@clave",conexion);
                cmd.Parameters.AddWithValue("@user", Usuario);
                cmd.Parameters.AddWithValue("@clave", Clave);
                int tipoUsuario = Convert.ToInt32(cmd.ExecuteScalar());
    
                if (tipoUsuario > 0)
                {
                    objEntidad.Tipo = Convert.ToString(tipoUsuario);
                    return true;
                }
                return false;
            }

    y en el boton de acceso lo siguiente:

                if (Logueo(txtnombre.Text.Trim(),txtpass.Text.Trim()))
                {
                    DialogResult = DialogResult.OK;
                }
                else
                {
                    MessageBox.Show("Usuario o contraseña erroneos", "Error en la operacion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtpass.Clear();
                    txtpass.Focus();
                    conexion.Close();          
                }

    ahora el problema es lo siguiente y es que no se en que parte del codigo cerrar la conexion. Osea el conexion.close();

    el codigo me esta validando datos ya que si coloco usuario y clave erronea me marca el error de ususario invalido pero al tratar de acceder como no cierro la conexion no me permite continuar y no se donde insertar dicho cierre.

    jueves, 19 de julio de 2018 3:40
  • Es mala práctica mantener los objetos de conexión a SQL Server (o cualquier otro motor de base de datos) en campos o propiedades a nivel de clase.  Uno crea, conecta y descarta.  Los objetos de conexión implementan la interfaz IDisposable, así que debe usarse la sentencia using.

    public bool Logueo (...)
    {
        using (SqlConnection conexion = new SqlConnection(...))
        {
            conexion.Open();
            ...
        }
    }


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 19 de julio de 2018 9:59
    Moderador