【问题标题】:Using the MySql ASP.NET membership provider with existing users对现有用户使用 MySql ASP.NET 成员资格提供程序
【发布时间】:2010-05-11 14:05:30
【问题描述】:

我的任务是将现有成熟的 ASP.NET 2.0 网站迁移到 NHibernate、Mono 和 MySQL 或 postgres。我对会员提供者如何对密码进行加盐感到有些困惑。如果我进行切换并使用 MySQL 成员资格提供程序 (outlined in this question) 或 AspSqlProvider,现有用户能否登录?

我想我会更容易问:我到底如何访问 ASP.NET 会员提供程序使用的加密密钥,该密钥对密码进行加盐,以便我可以在第三方提供程序中使用相同的密钥?

【问题讨论】:

    标签: mysql postgresql mono asp.net-membership


    【解决方案1】:

    您为这个网站有多少用户?它是可公开访问的,还是在公司局域网内使用的东西?

    将您现有的会员数据库转移到 MySQL 提供程序生成的模式可能会很有趣。我什至不确定它们使用的表模式有多相似,尽管我希望它们非常接近。

    如果用户数量相对较少,我会强烈考虑在更改到新系统时强制重置密码。

    edit 刚刚看到您在我打字时添加了 postgres - 如果您的数据库选择仍然悬而未决,那么使用基于 ORM 的提供程序可能会更容易,它为您提供一点可移植性(和一致的行为)

    如果使用 nhibernate,我最近正在寻找一个基于 nhibernate 的会员服务提供商并最终选择了这个:Fluent NHibernate Membership Provider (CodeProject)。只需最少的修改就可以为我工作,但它适用于没有这些问题的新建项目。虽然它是单声道的:)

    找到这个:Membership Providers - 请参阅“DataSchema”部分,aspnet_Membership 表。看起来获取盐不会成为问题,因此您应该能够在不重置密码的情况下使用此功能。

    【讨论】:

    • 重置密码是一个交易破坏者 :) 这也是我最初的想法,但这对客户来说是不行的。该网站可公开访问。
    • 我还应该提到我们也在迁移到 nHibernate 并远离存储过程。因此,删除了 asp.net 会员提供程序(存储过程)
    • 查看我添加的最后一行 - 看起来您可以从表 aspnet_Membership 中检索盐,因此您应该能够在不重置密码的情况下完成此操作。
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多