【发布时间】:2010-03-26 17:37:58
【问题描述】:
我正在开发一个系统,我们希望根据用户的角色限制向用户显示的信息的可用性。
例如我有一张桌子叫EventType (ID, EventTypeDescription)
其中包含以下记录:
1, 'Basic Event'
2, 'Intermediate Event'
3, 'Admin Event'
我需要实现的是根据登录用户的用户名(以及角色)过滤返回的记录。例如,如果高级用户登录,他们将看到所有事件类型,如果标准用户登录,他们将只看到基本事件类型等。
理想情况下,id 喜欢以一种可以根据需要轻松扩展到其他表的方式来执行此操作。因此,我想避免简单地将“角色”字段添加到数据对用户上下文敏感的每个表中。
我正在考虑的一个想法是创建某种权限表,例如:
PermissionsTable
(
ID,
Aspnet_RoleId,
TableName,
PrimaryKeyValue
)
使用它的缺点显然是必须使用表名来切换要加入的表。
编辑: 在没有任何更好的建议的情况下,我将采用我提到的最后一个想法,但不是有一个 TableName 字段,而是将 TableName 标准化为它自己的表,如下所示:
TableNames
(
ID,
TableName
)
UserPermissionsTable
(
ID,
Aspnet_UserId,
TableID,
PrimaryKeyValue
)
【问题讨论】:
-
只是一个想法,但如果您选择 1 个基本选项、2 个中级选项、3 个管理选项,那么您应该在这些数字之间放置一些空格,例如 10 20 30,这样您就可以在其中添加一些额外的代码 -未来之间。这将使您可以按代码对表格进行排序并测试 if (admin) 然后显示 admin-level-or-less。
标签: asp.net asp.net-membership