繁体   English   中英

在MVC4 RTM中从ASP.NET成员身份迁移到SimpleMembership

[英]Migrating from ASP.NET Membership to SimpleMembership in MVC4 RTM

新的MVC4 RTM互联网应用程序模板使用SimpleMembership提供程序,如SimpleMembership所述

我现有的MVC网站使用ASP.Membership框架,理想情况下我想将这些表中的用户数据迁移到新的SimpleMembership表。 我想要这样做的原因是:

  1. 与我使用EF的数据库的其余部分进行更清洁的集成
  2. 开箱即用支持Azure和OAuth
  3. 使用最新的MVC4 RTM控制器/视图而无需修改
  4. 我一直觉得现有的会员实施对我需要的东西有点膨胀

所以我今天编写了一个SQL脚本,将现有ASP.Net Membership表中的数据迁移到新的Simple Membership表中。 这可以在这里找到

在我的MVC 4网站上测试登录密码验证失败。 我相信SimpleMembership使用与旧的Membership框架不同的密码算法,因为在SimpleMemberShip框架下创建的新密码看起来要长得多。

所以我的问题是,因为我在旧的ASP.Net成员资格提供程序中使用“哈希”密码格式,并且用户原始密码无法恢复,我有什么选择让SimpleMembership提供程序正常工作。

我猜一些选项是:

  1. 让我的用户重置他们的密码
  2. 让SimpleMembership提供程序使用与旧的ASP.Net成员资格提供程序相同的密码算法。
  3. 恢复新的MVC 4 RTM互联网应用程序模板以使用旧的ASP.Net MemberShip提供程序。 这对我来说是最不可取的选择,因为我想使用SimpleMemberShip框架。

我怀疑很多人也希望将现有的会员数据库迁移到新的SimpleMemberShip提供商。

任何帮助非常感谢。

干杯

吉姆

我想表达保罗的评论,以防有人错过它,并建议他的解决方案是我见过的最好的。

http://pretzelsteelersfan.blogspot.com/2012/11/migrating-legacy-apps-to-new.html

谢谢保罗

您可以在用户登录时访问纯文本密码,这为您提供了另一个选项:

  1. 将旧密码保存在单独的表中
  2. 登录时,首先使用SimpleMembership方法
  3. 如果失败,请使用旧的哈希算法检查旧密码表(您需要确保纯文本密码仍在上下文中)
  4. 如果成功,请更新SimpleMembership表,然后从旧密码表中删除

用户不需要知道更改,活动用户将拥有更安全的哈希。 如果您希望以后强制进行安全性升级,可以警告用户,他们的帐户将在一年不活动后被删除,并且只需要退出两步系统。

我有一个类似的问题,我应该写一篇关于这样做的教程/博客文章,但我的解决方案是将以下内容添加到我的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM