none
Hacer Login al seleccionar el Rol RRS feed

  • Pregunta

  • Buenas,

    Tengo una aplicación Asp.Net MVC5 en donde las autorizaciones se basan en roles. Un usuario puede tener uno o más roles y la autenticación es a través de formulario con usuario y password.

    Cuando el usuario ingresa su credenciales, el sistema primero verifica la cantidad de roles que tiene el usuario en cuestión.

    Si sólo tiene un rol se hace Login y se le redirecciona directamente a la página principal del sistema

    Si tiene más de un rol, se le debe visualizar una página con un Combo para que seleccione el Rol con el cual accederá al sistema, cabe señalar que hasta este punto no se hará Login sino hasta que seleccione el Rol y pinche sobre un botón llamado "Continuar".

    Mi duda para este segundo caso es: ¿Debo persistir las credenciales ingresadas por el usuario en algún tipo de variable por ejemplo Session para hacer el Login cuando el usuario pulse ese botón "Continuar"? Esto con el fin de no volver a solicitarle dichas credenciales.


    • Editado eduar2083 martes, 27 de agosto de 2019 0:27
    martes, 27 de agosto de 2019 0:25

Todas las respuestas

  • hola

    >>Si tiene más de un rol, se le debe visualizar una página con un Combo para que seleccione el Rol

    porque ? si el usuario tiene mas de un rol deberia ingresar con el que tenga mas privilegios o en caso contrario tener ambos

    si un usuario se le asigno como user y como admin, entonces es admin

    lo que debes validar ante una accion es si tiene ese rol, si lo tiene permites la accion, pero eso no afecta que puede tener mas de uno

    si quiere ingresar con diferentes perfiles entonces le creas dos usuario diferentes, un usuario con rol "user" y otro usuario con rol "admin" entonces se autentica con uno u otro segun con cual quiera trabajar

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de agosto de 2019 14:14
  • Leandro,

    Las acciones que tienen control de Autorización están registradas en una tabla. Por otro lado tengo otra tabla donde relaciono los Roles y las acciones a las cuales se le proporciona acceso. He creado un atributo personalizado que hereda de Authorize para poder validar el acceso, esto implica que en cada Request hacia una acción que esté decorada con este atributo se consulta la Base de Datos. 

    Respecto a mi pregunta yo había pensado (erróneamente) verificar un solo rol (el que seleccionara en el combo), pero según me indicas, creo que debería validar si el usuario tiene al menos un rol con acceso a la acción correspondiente. 

    Dicho esto, espero que no se tornen lentos los Request al tener que validar la autorización. Desconozco si es así como debería manejarse las autorizaciones. He visto en algunos tutoriales que mapean el rol hardcode directamente en los Actions o Controllers pero esto implica tener que modificar la aplicacón para otorgar acceso a un nuevo rol.

    Saludos.


    • Editado eduar2083 jueves, 29 de agosto de 2019 13:57
    jueves, 29 de agosto de 2019 13:53