【发布时间】:2018-05-28 18:46:58
【问题描述】:
现有数据库模型(简化):
- 1 个用户可以加入 1 个或多个 AccessGroups。
- 1 AccessGroup 可以有 1 个或多个 AccessItens。
创建身份时,可能会为其分配一个或多个由受信任方发布的声明。声明是一个名称值对,表示主题是什么,不是主题可以做什么。
将 AccessItems 存储为 UserClaims 似乎不是一个好主意,
例如:
- UserClaims -> 名称 = CanDeleteSale;值 = 真
但另一方面,我想不出其他方法。
经过大量搜索,我想不出如何使用 ASP.NET Identity 中的角色或声明来表示此模型。
为什么?
管理员用户可以自定义 AccessGroups,然后使用声明性角色不适合这种情况。
我只能信任 AccessItens,因为它们是固定的 Id,就像枚举一样,所以我想使用枚举来使用声明性身份验证。
我需要在用户登录后存储所有用户 AccessItems 并将其用于稍后的身份验证操作,使用声明性方式。
ASP.NET Identity 对我来说似乎很漂亮,我现在正试图更好地理解它。
抱歉,如果我不能清楚地表达我的问题,请告诉我任何疑问。
【问题讨论】:
-
您是否尝试将 AccessItems 作为声明加载 身份验证?您可以缓存它们,这样您就不会在每个请求上都访问数据库。
-
这是我的第一个想法,但我认为我会错误地使用框架,看看 MSDN 怎么说:“声明是一个名称值对,它代表主题是什么,而不是主题可以做。”
标签: c# asp.net asp.net-core authorization asp.net-identity