C# 用于多站点ASP.NET Identity 2的中间件

C# 用于多站点ASP.NET Identity 2的中间件,c#,asp.net,asp.net-mvc,api,asp.net-identity-2,C#,Asp.net,Asp.net Mvc,Api,Asp.net Identity 2,上下文: 在一个项目中,我负责创建一个使用identity 2进行身份验证的中间件,以取代他们拥有的简单成员项目。我根据自己的喜好扩展了角色和用户,一切都很好。现在我需要准备好这个中间件,多站点 要求: 每个站点被视为不同的应用程序 每个用户名都是唯一的,如果他有权限的话,他可以登录多个站点 每个站点都有其唯一的角色,它们可以与其他站点具有相同的名称(而不是描述名称)(使ID成为角色表中唯一唯一的属性) 每个角色都有自己的属性集,这些属性可以而且可能会有不同的值,与其他站点中具有相同名称的其他

上下文

在一个项目中,我负责创建一个使用identity 2进行身份验证的中间件,以取代他们拥有的简单成员项目。我根据自己的喜好扩展了角色和用户,一切都很好。现在我需要准备好这个中间件,多站点

要求

  • 每个站点被视为不同的应用程序
  • 每个用户名都是唯一的,如果他有权限的话,他可以登录多个站点
  • 每个站点都有其唯一的角色,它们可以与其他站点具有相同的名称(而不是描述名称)(使ID成为角色表中唯一唯一的属性)
  • 每个角色都有自己的属性集,这些属性可以而且可能会有不同的值,与其他站点中具有相同名称的其他角色不同
想法

我对如何解决这一问题的想法是:

  • 由于角色有自己的ID,并且应该是唯一的,因此使用相同名称的不同角色应该没有问题(因此我必须从角色名称中删除唯一性)
  • 每个角色都属于一个应用程序,因此角色和应用程序(或者站点,如果您想简化的话)之间有一个多对一的连接
  • 就这样,这应该很简单
问题

我一直在尝试扩展Identity,以便解决手头的问题,但似乎无法用identityDbContext覆盖角色名的唯一性,因此,我的ApplicationDbContext现在继承了DbContext

问题

我知道身份是非常灵活的,我可以从另一个角度来解决这个问题,我现在还没有想到,因为我将有相当多的机会来改变usermanager、userstore、rolestore和rolemanager。这更像是一个“我是否以正确的方式处理此问题”,因为到目前为止,我还没有在身份2中找到任何处理此方法的方法

谢谢你的帮助