【发布时间】:2019-04-18 00:13:58
【问题描述】:
我正在使用 ASP.NET Core Identity 设置应用程序,尽管仔细阅读了该主题,但我仍在努力寻找适合我的要求的应用程序。
熟悉 Reddit 的 subreddit 概念的用户可能会很好地理解我的要求,因为这些概念非常相似。
基本上,我有一个要求,即用户可以是一个“区域”(类似于 subreddit)的版主,而只是另一个“区域”的“用户”。
归结为,当用户登录时,我需要知道他们在各个领域的角色。
我正在为 ASP.NET Core Identity 的 AspNetUserClaims 和 AspNetRoles / AspNetUserRoles 的实际含义而苦苦挣扎。
我正在考虑像这样定义 AspNetRoles:
Id Name
1000 User
2000 Junior Moderator
3000 Senior Moderator
然后像这样设置 AspNetUserClaims:
Id UserId ClaimType ClaimValue
1 1 area:public1 1000
2 1 area:private1 2000
这意味着 ID 为 1 的用户是“public1”区域的“用户”和“private1”区域的初级版主。
我有很多问题。
首先,通过尝试将两个值填充到“ClaimType”中,这打破了第一范式。
其次,没有参照完整性。
仔细观察 AspNetUserRoles,我发现用户和角色之间存在多对多的关系。除非我将每个可能区域的每个可能角色定义为 AspNetRole,否则我看不出这将如何工作。即便如此,我仍不清楚我将如何以引用安全的方式将其与 AspNetUserClaims 联系起来。
更复杂的是,我不清楚我是只需要声明还是声明和角色的组合。以下问题涉及该主题,但根据我的要求,我没有看到明确的路径:
Best Practices for Roles vs. Claims in ASP.NET Identity
没有理由我不能通过实施像上面这样的解决方案来解决我遇到的问题,并声称“area:public1”,但这与我对系统设计的理解背道而驰。
鉴于上述要求,在 ASP.NET Core Identity 中推荐的实现是什么?
【问题讨论】:
标签: asp.net-core asp.net-identity