将用户从自定义表迁移到ASP.NET成员资格表

Zan*_*son 3 c# asp.net wcf asp.net-membership

我正在创建一个新的中间层,我们所有的客户端调用都将通过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​​,我必须存储明文密码,因为我无法得到盐和否则就是哈希吧.这是真的?
  • 这些是否有意义,或者我是否以错误的方式开始?

对所提供的任何帮助表示赞赏.

Bri*_*ins 5

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

您只需要实现您实际需要的功能.