将用户迁移到Universal Membership Provider

时间:2012-12-18 01:00:29

标签: asp.net asp.net-membership

我正在尝试迁移到新的通用会员提供商(来自家庭酿造解决方案)。我已将旧的User表迁移到Users / Memberships表。

当我运行Membership.ValidateUser(txtUsername.Text.Trim(), txtPassword.Text.Trim())时,它总是返回false,即使我知道用户名/密码是正确的。

以下是我生成密码,哈希和盐的方法:

var salt = Crypto.GenerateSalt();
var hashedPassword = this.GenerateHashWithSalt(password, salt);

这是我正在使用的GenerateHashWithSalt方法

private string GenerateHashWithSalt(string password, string salt)
{
    string hashWithSalt = password + salt;
    byte[] saltedHashBytes = Encoding.UTF8.GetBytes(hashWithSalt);

    HashAlgorithm algo = HashAlgorithm.Create(Membership.HashAlgorithmType);

    byte[] hash = algo.ComputeHash(saltedHashBytes);

    return Convert.ToBase64String(hash);
}

我也跟着去了:

var salt = Crypto.GenerateSalt();
var saltedPassword = password + salt;
var hashedPassword = Crypto.HashPassword(saltedPassword);

这些似乎都不起作用。我错过了什么?

斯科特

1 个答案:

答案 0 :(得分:0)

Bah,回答说。

因此,所有这一步的第1步是将用户从我们的双向加密密码迁移到1路哈希。

我看到的每个例子都包含手动哈希密码。结果Membership.CreateUser(username,password);哈希密码(和盐),所以我正在哈希密码,这就是auth失败的原因。

我只需要调用Membership.CreateUser,传递用户名&纯文本传递,它工作。 WEEE!