作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个系统,我们希望根据用户的角色限制向用户显示的信息的可用性。
例如我有一个名为 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
)
最佳答案
我们做了类似的事情,我们的解决方案是使用一个表值函数来连接。即。
从事件中选择 *内部加入 [dbo].fn_AvailableEvents(@User_ID) a on e.id = a.id
该函数仅返回允许用户查看的事件的事件 ID。
关于asp.net - 如何将 .net 成员角色分配给单个数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525415/
我是一名优秀的程序员,十分优秀!