多站点ASP.NET身份2的中间件

背景

在一个项目中,我获得了创建中间件的工作,该中间件使用身份2进行身份validation,取代了他们拥有的简单成员项目。 我将角色和用户扩展到我的喜欢,一切都很好。 现在我需要制作这个中间件,多站点准备好了。

要求

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

想法

我在思考如何解决这个问题的方式是:

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

问题

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

问题

我知道身份非常灵活,我可以从另一个角度来解决这个问题,我现在没有想到,因为我会有很多变化来改变usermanager,userstore,rolestore和rolemanager。 这是一个“我正在以正确的方式解决这个问题”的问题,因为到目前为止,我还没有找到任何关于在身份2中解决这种方法的问题。

感谢您的任何帮助!