Pregunta

Tengo una pregunta:

¿Cómo hacer una aplicación web basada en roles? Como en los sitios de foros, hay muchos tipos de usuarios, administrador, moderador, etc. ¿Están los roles de estos tipos de usuarios almacenados en la base de datos o en web.config? Y cuando un usuario inicia sesión en nuestro sitio, ¿cómo controlar los roles de este usuario? En resumen, quiero aprender sobre autorización y autenticación.

Gracias ..

¿Fue útil?

Solución

@Mavera:

Básicamente, es el concepto de tener su propia tabla de usuarios en su propia base de datos, donde puede administrar permisos y almacenar información de inicio de sesión (por supuesto, correctamente hash). En el caso de un esquema de permisos de varios niveles, generalmente uso dos o más tablas, por ejemplo:

TblUsers:
-----------------------------------------------------------------
| UserID (PK) | UserName | HashedPassword | PermissionLevel (FK)|
|---------------------------------------------------------------|
|     1       | BobTables| adfafs2312     |         2           |
-----------------------------------------------------------------

TblPermissions
-------------------------------------
|  PermissionID (PK) | Description   |
--------------------------------------
|         1          |     User      |
|         2          |   SuperUser   |
|         3          |     Admin     |
--------------------------------------

Puede agregar una tercera tabla que contenga una relación de uno a muchos entre TblPermissions que exponga las habilidades reales que el usuario puede tener permitido hacer.

Consultar a un usuario sería tan simple como:

SELECT TblUser.Username, TblPermissions.Description 
    FROM TblUsers, TblPermissions 
    WHERE TblUser.UserID = @UserID 
    AND TblUser.PermissionLevel = TblPermission.PermissionID;

Cree una clase personalizada para encapsular esa información y almacénela en la sesión ASP.NET cuando inicien sesión.

Otros consejos

He descubierto que los esquemas de autorización integrados funcionan muy bien para situaciones simples en las que solo necesita autenticar básicamente quién puede ingresar y quién puede salir, pero se queda corto para situaciones personalizadas, como tener cuentas especiales de administrador, etc.

En esas situaciones, he creado mi propio esquema de autenticación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top