我正在创建一个新的中间层,所有客户端调用都将通过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,则必须存储明文密码,因为否则我无法获取盐和哈希值。 这是真的吗? - 所有这些都有意义吗,还是我开始走错了?
非常感谢您提供的任何帮助。
这就是开始变得混乱的地方。 这个新的中间层将被我们的Web应用程序使用,但不会被我们现有的桌面应用程序使用,后者在未来某个时候重写之前将使用旧的COM +中间层。 Web应用程序的用户管理在桌面应用程序中进行。 换句话说,用户将从桌面应用程序中创建并设置密码,并在其中访问已经存在的InetUsers表。
理想情况下,当我们部署新的中间层时,我们将从InetUsers表中获取所有用户,并为它们在aspnet_Users和aspnet_Membership中创建记录。 然后,我们将在InetUsers表上设置触发器,以使aspnet_Users和aspnet_Membership保持最新状态。
这里有一堆问题需要解决,所以我会尝试在这里列出它们:
- 这是正确的方法吗? 显然,在两个地方拥有这些数据并不理想,但请记住,我不是最终的决策者,我们在这里有点陷入了一些遗留问题,至少现在是这样。 仍然 - 也许有更好的方法。 - 在同样的思路下 - 我们是否最好编写自己的成员身份验证提供程序而不是使用SqlMembershipProvider? 这么做有多难/容易? - 如果我们采用这种方法,我计划在存储过程和触发器中使用aspnet_Membership_XXXX。 经过一些研究,我发现如果我想直接从SQL调用aspnet_Membership_CreateUser(即在触发器中...)而不是使用API,则必须存储明文密码,因为否则我无法获取盐和哈希值。 这是真的吗? - 所有这些都有意义吗,还是我开始走错了?
非常感谢您提供的任何帮助。