none
Implementación de la autorización basada en roles mediante ASP.NET MVC 5 RRS feed

  • Pregunta

  • Me gustaría implementar una autorización basada en roles en mi aplicación web que estoy construyendo

    Mi base de datos seria de esta manera donde idrol seria mi identificador de  rol de usuario ya sea al momento que se registren ya sea como coordinador,administrador,profesor o estudiante :

         create table registro(id int IDENTITY(1,1),Nombre varchar(100),appaterno varchar(100),apmaterno varchar(100),correo varchar(100),usuario varchar(100) PRIMARY KEY ,clave varchar(100),imagen image,idrol varchar(100));



    y hago un select from donde me logeo con sesion 

        
            SqlConnection con = new SqlConnection();
            SqlCommand com = new SqlCommand();
            SqlDataReader dr;
            // GET: Account
            [HttpGet]
           

            void connectionString()
            {
                con.ConnectionString =  "data source=DESKTOP-1F15CUB;database=master;integrated security=SSPI;";

            }
         


          public ActionResult Login(Registro1 acc)
            {
                connectionString();
                con.Open();
                com.Connection = con;
                com.CommandText =
         "select* from registro where usuario='"
         + acc.usuario +"'and clave='"+acc.clave+ "'";
                 dr = com.ExecuteReader();
                if (dr.Read())
                {
               
                    Session["usuario"] = Convert.ToString(acc.usuario);//acceso por sesion


                    
                    con.Close();//../Login/Login
                    return View("Index");
                }
                else
                {
                    con.Close();
                 
                    Response.Write("<script>alert('usuario no existente')</script>");
                    //onclick="alert('clave incorrecta')"
                    return View("Login");
                }
            }

    y asi mando a llamar al metodo Login en una pagina login.cshtml

         <form action="Login" method="post">
                       
                                <div class="input-group form-group">
                                    <div class="input-group-prepend">
                                        <span class="input-group-text"><i class="fas fa-user"></i></span>
                                    </div>
                                    <input type="text" class="form-control" name="usuario" placeholder="usuario">

                                </div>
                                <div class="input-group form-group">
                                    <div class="input-group-prepend">
                                        <span class="input-group-text"><i class="fas fa-key"></i></span>
                                    </div>
                                    <input type="password" class="form-control" name="clave" placeholder="contraseña">
                                </div>
                                <div class="row align-items-center remember">
                                    <input type="checkbox">Recuerdame
                                </div>


                                <!-- checar video https://www.youtube.com/watch?v=BnJ8UI-tI-E -->
                                <div class="form-group">
                                    <!-- <a href="#" class="btn btn-success">¿Soy un botón o un enlace?</a>-->
                                    <!--<button type="button" class="btn float-right login_btn" onclick="location.href='@Url.Action("Opciondeacceso")'">Iniciar Sesion</button>-->
                                    <input type="submit" value="Ingresar" class="btn float-right login_btn">
                                </div>
                           
                            </form>



    hasta el momento le eh puesta esta funcion en mi index.cshtml pero no funciona la parte de permitir o prohibir el acceso a vistas =(

        @if (User.IsInRole("admi"))

        {

          <div class="row">
          <div class="col-md-4">
            <h2>Getting started</h2>
            <p>
                ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
                enables a clean separation of concerns and gives you full control over markup
                for enjoyable, agile development.
            </p>
            <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more 
            &raquo;</a></p>
            </div>
            </div>
            }
      
        @if (User.IsInRole("coordi"))
        {

            <div class="row">
            <div class="col-md-4">
                <h2>Getting started</h2>
                <p>
                            ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites 
                            that enables a clean separation of concerns and gives you full control over 
                            markup
                            for enjoyable, agile development.
                      </p>
                    <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn 
                     more &raquo;</a></p>
                   </div>
                  </div>


                  }
      
        
              @if (User.IsInRole("profesor")){
            
             <div class="row">
              <div class="col-md-4">
               <h2>Getting started</h2>
                 <p>
                ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
                enables a clean separation of concerns and gives you full control over markup
                for enjoyable, agile development.
               </p>
               <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more 
               &raquo;</a></p>
               </div>
               </div>
        
                 }



                @if (User.IsInRole("estudiante"))

                {

              <div class="row">
              <div class="col-md-4">
                    <h2>Getting started</h2>
                    <p>
                            ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites 
                             that enables a clean separation of concerns and gives you full control over 
                             markup  for enjoyable, agile development.
                    </p>
                    <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn 
                    more &raquo;</a></p>
                    </div>
                   </div>

                   }


    pero mi duda es ¿Cómo permito o prohíbo el acceso a vistas / controladores específicos dentro de mi aplicación .NET MVC en una vista index.cshtml? 
    sábado, 17 de abril de 2021 0:54

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 19 de abril de 2021 14:03
    Moderador