使用ASP.NET成员资格提供程序数据库和您自己的数据库

Fai*_* S. 7 c# sql-server asp.net-mvc asp.net-membership c#-3.0

我们正在开发一个ASP.NET MVC应用程序,它当前使用它自己ApplicationData的域模型数据库,另一个Membership用于用户管理/成员资格提供程序.

我们data-annotations在控制器中使用访问限制.

[Authorize(Roles = "administrators, managers")]
Run Code Online (Sandbox Code Playgroud)

这对于简单的用例非常有用.


在我们扩展应用程序时,我们的客户希望限制specific users访问我们ApplicationData数据库的特定区域.

我们的每个产品都包含一个外键,指的是产品组装的区域.

用户故事将是:

  • NewYorkManagers角色的用户应该只能编辑/查看在纽约组装的产品.

我们创建了一个UserRightsRegions包含UserId和的占位符表RegionId.

我怎样才能链接均ApplicationData与Membership以数据库正常工作/有cross-database-key-references?(这样的事情甚至可能吗?)

所有帮助都非常感谢!

Sky*_*ers 2

在我看来,您应该能够可靠地将数据库与标准 aspnet_db 集成,但我建议不要复制或替换 aspnet_users 表。

这是使用 aspnet_db 架构的所有提供程序的焦点,包括可能增强但不实现自定义替换的自定义提供程序。

为了最大限度地重用提供者堆栈/API 中经过严格测试的基础设施代码,最好遵循该流程。

您需要非常关注任何修改后的成员资格核心功能,并确保您的新约束在每种情况下都以预期的方式运行。

我发现会员故事中最需要关注的方面是删除用户,对删除用户存储过程进行简单的修改/添加就可以很好地管理这一点。