我有一个问题:
如何制作基于角色的 Web 应用程序?比如在论坛站点中,有很多用户类型,admin、moderator 等等……这些用户类型的角色是存储在数据库还是 web.config 中的?而当一个用户登录到我们的站点时,如何控制这个用户的角色呢?简而言之,我想了解授权和身份验证。
谢谢..
我有一个问题:
如何制作基于角色的 Web 应用程序?比如在论坛站点中,有很多用户类型,admin、moderator 等等……这些用户类型的角色是存储在数据库还是 web.config 中的?而当一个用户登录到我们的站点时,如何控制这个用户的角色呢?简而言之,我想了解授权和身份验证。
谢谢..
查看这篇文章和视频:
我发现内置的授权方案非常适用于您只需要基本验证谁可以进入和谁可以离开的简单情况,但对于自定义情况(例如拥有特殊管理员帐户等)则不适用。
在这些情况下,我创建了自己的身份验证方案。
@马维拉:
基本上,它的概念是在您自己的数据库中拥有自己的用户表,您可以在其中管理权限和存储登录信息(当然是正确散列)。在多级权限方案的情况下,我通常使用两个或多个表,例如:
TblUsers:
-----------------------------------------------------------------
| UserID (PK) | UserName | HashedPassword | PermissionLevel (FK)|
|---------------------------------------------------------------|
| 1 | BobTables| adfafs2312 | 2 |
-----------------------------------------------------------------
TblPermissions
-------------------------------------
| PermissionID (PK) | Description |
--------------------------------------
| 1 | User |
| 2 | SuperUser |
| 3 | Admin |
--------------------------------------
您可以添加第三个表,其中包含 TblPermissions 之间的一对多关系,该关系公开了用户可能被允许执行的实际能力。
查询用户很简单:
SELECT TblUser.Username, TblPermissions.Description
FROM TblUsers, TblPermissions
WHERE TblUser.UserID = @UserID
AND TblUser.PermissionLevel = TblPermission.PermissionID;
创建一个自定义类来封装该信息,并在他们登录时将其存储在 ASP.NET 会话中。