在MVC4 RTM中从ASP.NET成员身份迁移到SimpleMembership
新的MVC4 RTM internet应用程序模板使用此处描述的SimpleMembership提供程序 我现有的MVC网站使用ASP.Membership框架,理想情况下,我希望将这些表中的用户数据迁移到新的SimpleMembership表中。我想这样做的原因是:在MVC4 RTM中从ASP.NET成员身份迁移到SimpleMembership,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-membership,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Membership,Asp.net Mvc 4,新的MVC4 RTM internet应用程序模板使用此处描述的SimpleMembership提供程序 我现有的MVC网站使用ASP.Membership框架,理想情况下,我希望将这些表中的用户数据迁移到新的SimpleMembership表中。我想这样做的原因是: 和使用EF的数据库的其余部分进行更干净的集成 对Azure和OAuth的开箱即用支持 使用最新的MVC4 RTM控制器/视图,无需修改 我一直觉得现有的会员制实现对于我所需要的东西来说有点臃肿 因此,我今天编写了一个SQL脚本,将
Jim我有一个类似的问题,我应该写一篇关于这方面的教程/博客文章,但我的解决方案是在我的web.config中添加以下内容(这对应于选项2):
...
上面代码中有趣的部分是“hashAlgorithmType”。将其设置为SHA1将使用旧的asp.net成员身份哈希算法
我也处于类似的位置——我要么要求我的用户更新他们的密码,要么使用特定的哈希算法
希望这有帮助!
-Sig当用户登录时,您可以访问纯文本密码,这为您提供了另一个选项:
用户不需要知道更改,活动用户将拥有更安全的哈希。如果您想在将来强制进行安全升级,您可以警告用户,他们的帐户将在一年的不活动后被删除,然后退出两步系统。我想公开Paul的评论,以防有人错过,并建议他的解决方案是我见过的最好的
谢谢保罗谢谢西格,非常感谢,我相信其他人会觉得这很有用。最后,我将让用户使用新的SimpleMemberShip哈希重置密码。显然这比旧的SHA1算法更安全。嗨,西格。我尝试了你的解决方案,但它在我的项目中不起作用。对吗?非常感谢。嘿,机会,我觉得一切都很好。您是否遇到了特定的错误或问题?我喜欢这个想法,但我很难找到实现方法。你能再解释一下如何在成员身份上下文之间切换吗?@vinney你不会使用两个成员身份上下文-只是手动访问旧表中的原始数据。使用两个上下文可能是可能的,但如果我最终使用这种方法,我将直接访问旧表这里有一篇关于迁移的文章,它透明地处理散列中的差异。谢谢保罗,这是我见过的最好的解决方案。我将采用这个方法。我应该指出,只有当你的密码被散列时,这个方法才有效。如果它们是加密的,你必须自己解密密码,然后用Paul的技术保存它。我必须为我的网站这样做,所以当我弄明白密码后,我会在Paul的帖子上留下评论。好的,你可以找到我处理加密密码和散列密码的代码。您必须将my DecryptingSqlMembershipProvider与SimpleMembershipProvider一起添加到提供者列表中,才能使其工作。
<system.web>
<membership hashAlgorithmType="SHA1" defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" etc.../>
</providers>
</membership>
<machineKey validation="SHA1" />
...
</system.web>