我们有一个运行大多数业务的旧版Webforms应用程序,由于多种原因,我们正在用ASP.NET Core重写此应用程序。我们要做的一件事是从我们自己的安全性实现中迁移而转而依赖于ASP.NET Identity。我们的主要问题是我们有成千上万个帐户,每个帐户分配了1个或多个用户。每个帐户具有可用的相同角色(AccountOwner,SupportAdmin,BillingAdmin等)。这在我们的“角色”表中定义如下:
角色ID(AutoInc),帐户ID,角色名称,角色描述
如果某个角色可用于所有帐户,则输入如下:
0,AccountAdmin,帐户管理员
0,SupportAdmin,支持管理员
0,BillingAdmin,帐单管理员
...等等,我们大约有10个角色以这种方式分配,并且可用于我们拥有的每个帐户。我们还有几个其他帐户(主要是为我们的员工服务),它们具有更具体的角色,例如:
1500,员工,公司员工
当前,我们调用类似于以下的例程:
If(user.isinrole(UserID,AccountID,“ AccountOwner”)){} ...
据我所知,ASP.NET Identity中没有类似的内容,因此很难管理多个帐户。
这似乎有点普遍,有人成功(安全地)做到了吗?如果可以,怎么办?我们是否最好使用ASP.Net Identity进行身份验证并使用我们自己的例程进行授权?我们想出的是:
1)扩展Identity类以包含我们想要的内容,这对我们来说没有太大的吸引力,因为现在我们再次依赖于自定义代码与强化的身份验证系统
或
2)每次创建帐户时,都要创建10-15个新角色,例如:1242_AccountOwner等(accountID为1242的AccountOwner角色)。
任何输入将不胜感激。