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

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ก.ย. 2024

ความคิดเห็น • 55

  • @surcer5037
    @surcer5037 6 หลายเดือนก่อน +2

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

  • @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!

  • @grbsql
    @grbsql ปีที่แล้ว +2

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

    • @InfoToolsSV
      @InfoToolsSV  ปีที่แล้ว

      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 5 หลายเดือนก่อน +1

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

    • @InfoToolsSV
      @InfoToolsSV  4 หลายเดือนก่อน

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

    • @InfoToolsSV
      @InfoToolsSV  4 หลายเดือนก่อน +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 4 หลายเดือนก่อน

      @@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: th-cam.com/video/iOmC2JufnnI/w-d-xo.html

  • @davidleonardosanchezrocha8957
    @davidleonardosanchezrocha8957 ปีที่แล้ว

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

    • @InfoToolsSV
      @InfoToolsSV  ปีที่แล้ว

      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 ปีที่แล้ว

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

  • @guillermozuniga4058
    @guillermozuniga4058 ปีที่แล้ว +1

    Excelente, tendras alguna continuacion a este proyecto?

    • @InfoToolsSV
      @InfoToolsSV  ปีที่แล้ว

      Muchas graicas, con respecto a tu consulta, no tengo una continuación, pero con este vídeo: th-cam.com/video/lVpToyIQHC4/w-d-xo.html puede completarse el CRUD. Saludos!

  • @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

  • @lordan1254
    @lordan1254 2 ปีที่แล้ว +2

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

    • @InfoToolsSV
      @InfoToolsSV  2 ปีที่แล้ว

      Verifica que la estructura del procedimiento sea la correcta.
      CREATE PROCEDURE
      -- Parametros
      AS
      BEGIN
      -- Procesos a ejecutar
      END

    • @jhonalexanderarizaduarte845
      @jhonalexanderarizaduarte845 ปีที่แล้ว

      Tengo ese error

    • @jhonalexanderarizaduarte845
      @jhonalexanderarizaduarte845 ปีที่แล้ว

      Falta cerrar un parentesis despues del @clave

  • @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: th-cam.com/video/lVpToyIQHC4/w-d-xo.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 ปีที่แล้ว

      😔

  • @saramorales978
    @saramorales978 ปีที่แล้ว +1

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

    • @InfoToolsSV
      @InfoToolsSV  ปีที่แล้ว

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

    • @saramorales978
      @saramorales978 ปีที่แล้ว

      @@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  ปีที่แล้ว

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

  • @aliensoul7600
    @aliensoul7600 10 หลายเดือนก่อน +1

    how can you set the background in visual studio code?

    • @InfoToolsSV
      @InfoToolsSV  10 หลายเดือนก่อน +1

      I'm using an extension called ClaudiaIDE.

    • @aliensoul7600
      @aliensoul7600 10 หลายเดือนก่อน

      @@InfoToolsSV oh super bro

  • @yulgon8918
    @yulgon8918 5 หลายเดือนก่อน +1

    ...Y este ejemplo para MVC ??

    • @InfoToolsSV
      @InfoToolsSV  5 หลายเดือนก่อน

      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.

  • @julioamaya7181
    @julioamaya7181 ปีที่แล้ว +1

    Como le agregaste esa imagen de background al vs

    • @InfoToolsSV
      @InfoToolsSV  ปีที่แล้ว

      Con la extensión ClaudiaIDE

  • @YossMB
    @YossMB ปีที่แล้ว +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  ปีที่แล้ว

      Te falta aplicar los permisos en la estructura switch.

    • @YossMB
      @YossMB ปีที่แล้ว

      @@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

  • @victorandrespolo
    @victorandrespolo ปีที่แล้ว +1

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

  • @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.