gpt4 book ai didi

c# - ASP.NET 成员资格 - 从成员资格表中检索密码和 PasswordSalt - 哈希用户 ID

转载 作者:太空狗 更新时间:2023-10-30 00:22:03 26 4
gpt4 key购买 nike

我非常接近完成这个项目。我需要从我的 Membership 表中检索密码和 passwordSalt,以将其与我的“OldPasswords”表进行比较。

问题是成员(member)提供者不允许我使用 GetPassword 方法,因为密码是散列的。

而且我无法在普通的 sqlConnection 中检索它,因为 UserID 也被散列了。

有谁知道如何对 UserID 进行哈希处理以便我可以将其放入我的 where 子句中?

或者也许有不同的方法来获取该数据?

感谢任何帮助。

谢谢,

史蒂夫

最佳答案

Steve,UserId 没有经过哈希处理。您可能会将 UserName 与 UserId (ProviderUserKey) 混淆,后者是一个 Guid。

在您的其他问题的上下文中:您应该在用于创建新用户的代码中引用此代码以记录初始密码哈希、salt 和格式,并在 OnPasswordChanging 中引用此代码,以便您可以检查/拒绝/插入。

这将获取当前登录用户的相关信息:

var user = Membership.GetUser();
var userId = user.ProviderUserKey;

MembershipPasswordFormat passwordFormat;
string passwordSalt;
string password;

var cstring = WebConfigurationManager.ConnectionStrings["localSqlServer"];
using (var conn = new SqlConnection(cstring.ConnectionString))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "select PasswordFormat,PasswordSalt,Password from aspnet_Membership where UserId=@UserId";
cmd.Parameters.AddWithValue("@UserId", userId);
conn.Open();
using (var rdr = cmd.ExecuteReader())
{
if (rdr != null && rdr.Read())
{
passwordFormat = (MembershipPasswordFormat) rdr.GetInt32(0);
passwordSalt = rdr.GetString(1);
password = rdr.GetString(2);
}
else
{
throw new Exception("An unhandled exception of type 'DoesntWorkException' has occured");
}
}
}
}

//do something interesting hew with passwordFormat, passwordSalt , password

关于c# - ASP.NET 成员资格 - 从成员资格表中检索密码和 PasswordSalt - 哈希用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com