新的MVC4 RTM互联网应用模板使用SimpleMembership提供商,如此处所述SimpleMembership
我现有的MVC网站使用ASP.Membership框架,理想情况下我想将这些表中的用户数据迁移到新的SimpleMembership表。我想要这样做的原因是:
所以我今天编写了一个SQL脚本,将现有ASP.Net Membership表中的数据迁移到新的Simple Membership表中。可以找到here
在我的MVC 4网站上测试登录密码验证失败。我相信SimpleMembership使用与旧的Membership框架不同的密码算法,因为在SimpleMemberShip框架下创建的新密码看起来要长得多。
所以我的问题是,因为我在旧的ASP.Net会员提供商中使用“哈希”密码格式,并且用户原始密码无法恢复,我有什么选择让SimpleMembership提供商工作。
我猜一些选项是:
我怀疑很多人也希望将现有的会员数据库迁移到新的SimpleMemberShip提供商。
非常感谢任何帮助。
干杯
吉姆
答案 0 :(得分:12)
我想表达保罗的评论,以防任何人错过它,并建议他的解决方案是我见过的最好的。
http://pretzelsteelersfan.blogspot.com/2012/11/migrating-legacy-apps-to-new.html
谢谢保罗
答案 1 :(得分:11)
用户登录时可以访问纯文本密码,这为您提供了另一个选项:
用户无需了解更改,活动用户将拥有更安全的哈希。如果您希望以后强制进行安全性升级,可以警告用户,他们的帐户将在一年不活动后被删除,并且只需要退出两步系统。
答案 2 :(得分:7)
我有一个类似的问题,我应该写一篇关于这样做的教程/博客文章,但我的解决方案是将以下内容添加到我的web.config中(这对应于选项#2):
<system.web>
<membership hashAlgorithmType="SHA1" defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" etc.../>
</providers>
</membership>
<machineKey validation="SHA1" />
...
</system.web>
上面代码的有趣部分是“hashAlgorithmType”。将其设置为SHA1将使用旧的asp.net成员资格哈希算法。
我也处于类似的位置 - 我要么让我的用户更新他们的密码,要么保持特定的哈希算法。
希望这有帮助! -sig