【发布时间】: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