1

我们有一个系统将用户名/密码存储为纯文本。我被要求将其转为会员资格。

我想要一个 SQL 函数将纯文本密码转换为 .NET Membership Hashed 密码。我发现的唯一 HashBytes 函数甚至与我在 .NET Membership 表中看到的不相近。

生无可恋。请帮忙。

4

1 回答 1

0

我了解到您无法在 T-SQL 中生成相同的 HASH 算法,最好的方法是将您的基本表简单地读取到 ASP.net 端,然后调用 Membership Script 插入用户。这也减少了时间。

DataSet dtData = DivDatabase.ExecuteSQLString("SELECT * FROM Users");   

foreach (DataRow row in dtData.Tables[0].Rows)
{
    MembershipUser mUser = null;
    mUser = Membership.GetUser(row["Username"].ToString());
    if (mUser == null)
    {
        mUser = Membership.CreateUser(row["Username"].ToString(), row["Password"].ToString(), row["Email"].ToString() );
    }
}

我首先检查用户名是否不在系统中。这是因为我有重复的用户名,我想消除它。对于 Membership 表中不存在的旧表中的其他信息,我们同意高级管理层的意见,即我们不会使用 Membership Profile,因为编写查询并不容易。但我添加了示例代码以供参考。

var profile = System.Web.Profile.ProfileBase.Create(row["Username"].ToString());
profile.SetPropertyValue("FirstName", row["FirstName"].ToString());
profile.SetPropertyValue("LastName", row["LastName"].ToString());
profile.Save();

希望这个对你有帮助。

于 2013-06-10T12:52:12.370 回答