代码之家  ›  专栏  ›  技术社区  ›  Saif Khan

ASP.NET成员资格和角色分离关系

  •  1
  • Saif Khan  · 技术社区  · 14 年前

    我有一个ASP.NET项目,我想保持成员资格(SQL提供程序)在一个单独的数据库和角色/配置文件将每个应用程序。

    成员资格数据库和角色/配置文件数据库之间的关键是什么?是UserID还是UserName?

    2 回复  |  直到 14 年前
        1
  •  -2
  •   S P    14 年前

    在这种情况下,最好的方法是实现自己的(自定义)成员身份和角色提供程序。成员资格和角色之间的关系由您自己定义,用户名通常用于此。

    也许我不应该提到“最佳解决方案”,但在我看来,默认的AspNet成员身份和角色提供程序伴随着AspNet表,这些表是使用AspNet-regsql命令创建的。如果Microsoft的成员资格和角色提供程序不能满足您的需要,您应该创建自己的。

    我的结论是,我的解决方案可能不是“最佳解决方案”,而是一个建议。另一件事是ASP.NET提供商并不是一个好的软件设计的例子。我们仍在使用它,因为它们与其他控件兼容。你的解决方案可以,但我的也可以,这取决于赛义夫先生选择一个最适合他的应用程序的解决方案。

    正如微软提到的:

    您需要将成员资格信息存储在.NET Framework附带的成员资格提供程序不支持的数据源中,如FoxPro数据库、Oracle数据库或其他数据源。

    您需要使用

    不同于的数据库架构 服务器使用的数据库架构 与.NET一起提供的提供商 框架

        2
  •  2
  •   Sky Sanders    14 年前

    如果我正确地阅读了您的问题,您希望将成员身份存储在一个数据库实例中,将角色存储在另一个数据库实例中。

    通过简单地提供不同的连接字符串,这是可以接受和可能的。你没有

    角色和成员资格表之间没有真正的“关系”,并且通过aspnet\u users表中记录的外观推断出的任何关系都是一致的。如果在为用户进行角色查询时存在记录,则使用该userId,否则将创建具有新userId的新记录。

    username 字段,该字段虽然对应用程序是唯一的,但不是键。

    因此,只要您知道在调用Membership.DeleteUser时必须手动删除角色记录,就可以只使用两个数据库,而不需要自定义实现。