¿Sistema de autenticación para aplicaciones web ASP.NET?
-
07-07-2019 - |
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 ..
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
Revise estos artículos y videos:
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.