【问题标题】:Migrate users from custom table to ASP.NET Membership tables将用户从自定义表迁移到 ASP.NET 成员表
【发布时间】:2011-03-09 16:23:28
【问题描述】:

我正在创建一个新的中间层,我们所有的客户端调用都将通过 WCF 服务。我们在服务中使用 ASP.NET 成员身份来验证用户身份。中间层将访问一个现有数据库,其中我们已经有一个包含用户名和密码的 InetUsers 表。

这就是它开始变得混乱的地方。这个新的中间层将被我们的 Web 应用程序使用,但不会被我们现有的桌面应用程序使用,在我们将来某个时候重写它之前,它将使用旧的 COM+ 中间层。 Web 应用程序的用户管理发生在桌面应用程序中。换句话说,将在桌面应用程序中创建用户并设置和更改密码,这反过来又会影响已经存在的 InetUsers 表。

理想情况下,当我们部署新的中间层时,我们将从 InetUsers 表中获取所有用户,并在 aspnet_Users 和 aspnet_Membership 中为他们创建记录。然后我们将在 InetUsers 表上设置一个触发器,以使 aspnet_Users 和 aspnet_Membership 保持最新。

这里面包含了一大堆问题,所以我会在这里尝试将它们全部列出:

  • 这是正确的方法吗?显然,在两个地方拥有这些数据并不理想,但请记住,我不是这里的最终决策者,我们在这里有点卡住了一些遗留的东西,至少现在是这样。仍然 - 也许有更好的方法。
  • 同理 - 编写自己的成员资格提供程序而不是使用 SqlMembershipProvider 会更好吗?这样做有多难/容易?
  • 如果我们使用这种方法,我计划在表的初始填充以及触发器中使用 aspnet_Membership_XXXX 存储过程。对此进行了一些研究,看来如果我想直接从 SQL 调用 aspnet_Membership_CreateUser(即在触发器中......)而不是使用 API,我必须存储明文密码,因为我无法得到盐和否则哈希权。这是真的?
  • 这有什么意义吗,还是我一开始就走错了路?

非常感谢提供的任何帮助。

【问题讨论】:

    标签: c# asp.net wcf asp.net-membership


    【解决方案1】:

    如果您已经有一个数据库结构,我会编写一个自定义会员提供程序并跳过现有的会员结构。这样,您就可以使用开发人员已经习惯的一种数据库结构,无论是用于数据访问、报告还是其他目的。创建一个继承自 MembershipProvider 的类。看看这个:http://msdn.microsoft.com/en-us/library/f1kyba5e.aspxhttp://www.devx.com/asp/Article/29256/0/page/3

    你只需要实现你真正需要的功能。

    【讨论】:

    • 谢谢,看起来这对我们来说是最合适的,所以我会考虑实施。
    • 再次感谢,使用我编写的自定义提供程序对我们来说是一个更好的解决方案。
    【解决方案2】:

    编写自己的会员服务提供商代码并不“难”。如果您打算暂时使用混合解决方案,那么推出自己的提供商可能比在两个地方维护数据更干净。

    然后,当您准备好迁移到新的标准会员提供商时,只需将用户转移一次并重新指向桌面和 Web 界面的新提供商即可。

    【讨论】:

    • 谢谢@Kendrick - 好建议。我选择了@Brian 的答案,因为他链接了有关推出我自己的会员提供程序的文章,但是将来迁移到 SqlMembershipProvider 的想法是一个很好的想法,我会牢记这一点。
    猜你喜欢
    • 2011-04-04
    • 2013-04-26
    • 2021-11-25
    • 2017-05-22
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2019-01-25
    • 2017-08-05
    相关资源
    最近更新 更多