ASP.NET C♯ || Control de Permisos en base a Roles de Usuarios, Registro y Login (SQL Server) [2022]

Поделиться
HTML-код
  • Опубликовано: 11 янв 2025

Комментарии •

  • @surcer5037
    @surcer5037 10 месяцев назад +2

    Estoy en la Utec y tus videos me ayudan a completar mis conocimientos

  • @grbsql
    @grbsql 2 года назад +2

    Excelente video en TODOS los aspectos. Muchas gracias por compartir su gran conocimiento

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Gracias por tu comentario, saludos!

  • @jimenezlozadakevin4519
    @jimenezlozadakevin4519 2 года назад +3

    Excelente, espero la siguiente parte. Me esta sirviendo para mi proyecto. Buen trabajo :)

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Excelente, gracias por tu comentario, saludos!

  • @santiagosoluciones
    @santiagosoluciones 2 года назад +1

    Excelentes aportes, gracias por compartir tu profesional conocimiento.

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Gracias a ti por tu comentario, saludos!

  • @aarongirongarrido414
    @aarongirongarrido414 2 года назад +2

    Excelente trabajo!

  • @BELLO-yx8hr
    @BELLO-yx8hr Год назад +1

    Hermano muchas gracias por todos tus videos, estoy casi por terminar un proyecto de Compras a Proveedores gracias a ti, sólo que tengo el detalle de que no he podido hacer funcionar un BUSCADOR de Productos de acuerdo al Nombre, ¿Cómo se configura?. Para mi proyecto me basé en tus videos de CRUD con imagen, SQL Server y SP de hace 4 meses.

    • @InfoToolsSV
      @InfoToolsSV  Год назад

      Hola compa, haré un vídeo esta semana sobre un buscador y espero sirva para tu proyecto.

    • @BELLO-yx8hr
      @BELLO-yx8hr Год назад +1

      @@InfoToolsSV Sería de gran ayuda, afortunadamente y con algo de ayuda, encontré que el Procedimiento Almacenado estaba mal redactado. Si a alguien le sirve acá dejo la INFO:
      CREATE OR ALTER PROCEDURE sp_BNproductos
      @NombreB NVARCHAR(255)
      AS
      BEGIN
      SELECT *
      FROM Productos
      WHERE Nombre LIKE '%'+@NombreB+'%';
      END
      En el controlador:
      public ActionResult Buscar(string buscar)
      {
      using (SqlConnection con = new(Configuration["ConnectionStrings:DefaultConnection"]))
      {
      using (SqlCommand cmd = new("sp_BNproductos", con)) //Ejecuta el procedimiento almacenado
      {
      cmd.CommandType = System.Data.CommandType.StoredProcedure;
      cmd.Parameters.Add("@NombreB", SqlDbType.VarChar).Value = buscar;
      con.Open();
      SqlDataAdapter da = new(cmd); //Ejecutar la sentencia
      DataTable dt = new(); //Crear una tabla
      da.Fill(dt);
      da.Dispose();
      List lista = new();
      for (int i = 0; i < dt.Rows.Count; i++){
      lista.Add(new ProductosModel(){
      Id_producto = Convert.ToInt32(dt.Rows[i][0]),
      Nombre = Convert.ToString(dt.Rows[i][1]),
      Marca = Convert.ToString(dt.Rows[i][2]),
      });}
      ViewBag.Productos = lista;
      con.Close();}
      return View("Productos");
      }}

  • @ReyZero
    @ReyZero 8 месяцев назад +1

    Gran video, se podra avanzar con los botones por lo menos uno para saber como realizar esos cambios ?¡?

    • @InfoToolsSV
      @InfoToolsSV  8 месяцев назад

      Tengo varios vídeos sobre cómo programar las funciones CRUD con diferentes tecnologías. Saludos.

    • @InfoToolsSV
      @InfoToolsSV  8 месяцев назад +1

      Tengo diferentes vídeos de cómo programar las funciones CRUD, puedes guiarte con el que gustes dependiendo de las tecnologías que quieras usar. Saludos.

    • @ReyZero
      @ReyZero 8 месяцев назад

      @@InfoToolsSV tienes alguno que continúe en esta misma tecnología ya que me queda claro el uso pero igual todavía estoy aprendiendo y entendiendo

  • @sebastianschumann9813
    @sebastianschumann9813 Год назад +1

    Tengo un problema a la hora de loguearme, dice: La conexión no se cerró. El estado actual de la conexión es abierta. Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    • @InfoToolsSV
      @InfoToolsSV  Год назад

      Revisa que tu cadena de conexión tenga las propiedades necesarias para tu caso:
      server=SERVIDOR; database=BASE_DE_DATOS; Trusted_Connection=SSPI; Encrypt=false; TrustServerCertificate=true

  • @fernandojoelperezmartinez5733
    @fernandojoelperezmartinez5733 Год назад +1

    Hola, si quisiera agregar el login a un CRUD de estudiantes sencillo como lo puedo hacer?

    • @InfoToolsSV
      @InfoToolsSV  Год назад

      Tengo un vídeo básico de como puedes hacerlo: ruclips.net/video/iOmC2JufnnI/видео.html

  • @USS-BERNAL
    @USS-BERNAL Год назад +1

    Saludos, como controlo que se vean ciertos formulario de acuerdo a el nivel de usuario?. Gracias

    • @InfoToolsSV
      @InfoToolsSV  Год назад +1

      Haré un vídeo sobre ese tema, saludos!

    • @USS-BERNAL
      @USS-BERNAL Год назад

      Excelente@@InfoToolsSV

    • @USS-BERNAL
      @USS-BERNAL 2 месяца назад

      Saludos, como va el video

  • @aliensoul7600
    @aliensoul7600 Год назад +1

    how can you set the background in visual studio code?

    • @InfoToolsSV
      @InfoToolsSV  Год назад +1

      I'm using an extension called ClaudiaIDE.

    • @aliensoul7600
      @aliensoul7600 Год назад

      @@InfoToolsSV oh super bro

  • @julioamaya7181
    @julioamaya7181 Год назад +1

    Como le agregaste esa imagen de background al vs

  • @lordan1254
    @lordan1254 2 года назад +2

    Alguien sabe porqué no me funciona el "as begin" ...... "end" ?

  • @maurodb6036
    @maurodb6036 2 года назад +1

    Hola estos tutoriales son muy utiles
    tengo una consulta
    Si tengo windows 11 home single lenguage, y quiero instalar windows 10,
    Que windows 10 instalo?
    10 home o 10 pro?
    Version 1903

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Depende, ambas ediciones comparten características, sin embargo la edición Pro, tiene características adicionales. Debes instalar la edición que necesites en base a tu uso, te recomiendo ver las diferencias princiapales:
      www.microsoft.com/es-es/windows/compare-windows-10-home-vs-pro

  • @leticiadelrosvelasquezverg6926
    @leticiadelrosvelasquezverg6926 2 года назад +1

    Buen día. Consulta vas a programar los botones update y delete? Me ayudaría bastante. Espero tu respuesta Saludos. 😊

    • @InfoToolsSV
      @InfoToolsSV  2 года назад +1

      Hola, para este proyecto no ya que el objetivo solo es el nivel de acceso, sin embargo te comparto este vídeo: ruclips.net/video/lVpToyIQHC4/видео.html donde se realiza la programación de los botones CRUD, la estructura y lógica usada es la misma, por lo que se te hará fácil guiarte. A partir del minuto 34 empieza la programación de los eventos, sin embargo previamente debe crearse un formulario donde se habilitaran los controles para editar. Saludos!

    • @leticiadelrosvelasquezverg6926
      @leticiadelrosvelasquezverg6926 2 года назад

      @@InfoToolsSV
      Agradezco tu respuesta. Lo intenté así como lo mencionas no obtuve buenos resultados ya que estoy iniciando en esto de programación y hay cosas que aún ignoro. Ejm la consulta de sp_datos poder adaptarlo al proyecto de roles para que muestre sólo un registro ya sea para eliminar o actualizar.

    • @leticiadelrosvelasquezverg6926
      @leticiadelrosvelasquezverg6926 2 года назад

      😔

  • @davidleonardosanchezrocha8957
    @davidleonardosanchezrocha8957 2 года назад

    En este caso para utilizar los botones del crud Actualizar, leer y Eliminar faltaria la activacion de estos botones

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Como lo digo en el vídeo, los botones se agregaron de ejemplo para comprobación de los permisos, si se quieren mantener los botones, programarlos es más fácil con las restricciones aplicadas.

    • @davidleonardosanchezrocha8957
      @davidleonardosanchezrocha8957 2 года назад

      @@InfoToolsSV Vale bro muchas gracias esos los puedo buscar en los videos de aca osea sirven?

  • @guillermozuniga4058
    @guillermozuniga4058 2 года назад +1

    Excelente, tendras alguna continuacion a este proyecto?

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Muchas graicas, con respecto a tu consulta, no tengo una continuación, pero con este vídeo: ruclips.net/video/lVpToyIQHC4/видео.html puede completarse el CRUD. Saludos!

  • @saramorales978
    @saramorales978 2 года назад +1

    Excelente, alguien pudo clonarlo? no me funciona a la hora de clonarlo, me pueden ayudar?

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Te recomiendo descargar el proyecto y abrir la solución, saludos!

    • @saramorales978
      @saramorales978 2 года назад

      @@InfoToolsSV Si eso hice pero a la hora de registrar un usuario y luego inciar sesion me muestra un error y no se por que

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      @@saramorales978 Verifica que el patrón de encriptación sea el mismo al registrar como al iniciar sesión.

  • @yulgon8918
    @yulgon8918 9 месяцев назад +1

    ...Y este ejemplo para MVC ??

    • @InfoToolsSV
      @InfoToolsSV  9 месяцев назад

      En ASP.NET MVC con C#, el control de permisos basado en roles de usuarios junto con el registro y inicio de sesión se puede implementar de varias maneras.
      Para la autenticación, puedes usar el sistema de autenticación de ASP.NET Identity, que maneja el registro, inicio de sesión y la gestión de usuarios de forma integrada.
      Para la autorización basada en roles, puedes utilizar atributos de autorización en tus controladores o acciones. Por ejemplo, [Authorize(Roles = "Admin")] restringirá el acceso a los usuarios que tengan el rol "Admin".
      Para las áreas restringidas, asegúrate de que tus vistas y controladores estén protegidos con la autorización basada en roles.
      Recuerda que este es un enfoque básico y que hay muchas formas de personalizar y mejorar este sistema según las necesidades específicas de tu aplicación.

  • @YossMB
    @YossMB 2 года назад +1

    tengo un problema con las restricciones.. las restricciones ignoran las condiciones y se siguen mostrando
    void Permisos(int Idrol)
    {
    try
    {
    SqlCommand cmd = new SqlCommand("sp_permisos", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@IdRol", SqlDbType.Int).Value = Idrol;
    con.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    bool Crear, Leer, Modificar, Eliminar;
    foreach(GridViewRow fila in datos.Rows)
    {
    while (reader.Read())
    {
    switch (reader[0].ToString())
    {
    case "Crear":
    Crear = Convert.ToBoolean(reader[1].ToString());
    if (Crear)
    {
    btnCreate.Visible = true;
    }
    else
    {
    btnCreate.Visible = false;
    }
    break;
    case "Modificar":
    Modificar = Convert.ToBoolean(reader[1].ToString());
    Button btn2 = fila.FindControl("btnUpdate") as Button;
    if (Modificar)
    {
    btn2.Visible = true;
    }
    else
    {
    btn2.Visible = false;
    }
    break;
    case "Leer":
    Leer = Convert.ToBoolean(reader[1].ToString());
    Button btn3 = fila.FindControl("btnRead") as Button;
    if (Leer)
    {
    btn3.Visible = true;
    datos.Visible = true;
    }
    else
    {
    btn3.Visible = false;
    datos.Visible = false;
    }
    break;
    case "Eliminar":
    Eliminar = Convert.ToBoolean(reader[1].ToString());
    Button btn4 = fila.FindControl("btnDelete") as Button;
    if (Eliminar)
    {
    btn4.Visible = true;
    }
    else
    {
    btn4.Visible = false;
    }
    break;
    }
    }
    }
    con.Close();
    reader.Close();
    }
    catch (Exception)
    {
    throw;
    }
    }
    ============================================================================================
    ALTER procedure [dbo].[sp_permisos]
    (
    @IdRol int
    )
    as
    begin
    select Nombre, Estado from RolesPermisos inner join Permisos on Permisos.IdPermiso = RolesPermisos.IdPermiso where IdRol = @IdRol
    end
    ==================================
    este es el código.. ayudaaaaaa

    • @InfoToolsSV
      @InfoToolsSV  2 года назад

      Te falta aplicar los permisos en la estructura switch.

    • @YossMB
      @YossMB 2 года назад

      @@InfoToolsSV ya los apliqué y sigue sin hacer caso a las restricciones, lo puse en modo de ejecución de línea por línea y pasa que cuando llega al while no entra al switch y se va hasta el final del while
      foreach(GridViewRow fila in datos.Rows)
      {
      while (reader.Read())
      {
      switch (reader[0].ToString())
      {
      case "Crear":
      Nuevo = Convert.ToBoolean(reader[1].ToString());
      if (Nuevo)
      {
      btnCreate.Visible = true;
      }
      else
      {
      btnCreate.Visible = false;
      }
      break;
      case "Modificar":
      Actualizar = Convert.ToBoolean(reader[1].ToString());
      Button btn2 = fila.FindControl("btnUpdate") as Button;
      if (Actualizar)
      {
      btn2.Visible = true;
      }
      else
      {
      btn2.Visible = false;
      }
      break;
      case "Leer":
      Leer = Convert.ToBoolean(reader[1].ToString());
      Button btn3 = fila.FindControl("btnRead") as Button;
      if (Leer)
      {
      btn3.Visible = true;
      datos.Visible = true;
      }
      else
      {
      btn3.Visible = false;
      datos.Visible = false;
      }
      break;
      case "Eliminar":
      Eliminar = Convert.ToBoolean(reader[1].ToString());
      Button btn4 = fila.FindControl("btnDelete") as Button;
      if (Eliminar)
      {
      btn4.Visible = true;
      }
      else
      {
      btn4.Visible = false;
      }
      break;
      }
      }
      }
      Ya apliqué las restricciones que mencionó.. pero no se en donde está el error

  • @IrvingCoronaSerrano
    @IrvingCoronaSerrano Год назад

    ¿Este código se puede desarrollar en Visual Studio 2012?

    • @InfoToolsSV
      @InfoToolsSV  Год назад

      Claro que sí, siempre y cuando tengas las tecnologías instaladas la versión del IDE no debe ser un problema.

  • @victorandrespolo
    @victorandrespolo 2 года назад +1

    Es un poco difícil prestarle atención al proyecto con tremenda wapura de fondo xD