Steve,UserId沒有被散列。您可能會將UserName與Guid的UserId(ProviderUserKey)混淆。
在您的其他問題的上下文中:您應該在用於創建新用戶的代碼中引用此代碼,以便在OnPasswordChanging中記錄初始密碼哈希,salt和格式AND,以便您可以檢查/拒絕/插入。
這將獲得在當前登錄用戶的相關信息:
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 [email protected]";
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
你有什麼對EnablePasswordRetrieval? – 2010-04-30 02:24:25
「用戶ID也被哈希」 - 你能證實這一點嗎? – 2010-04-30 02:25:38
以下是用戶ID在成員資格表中的樣子: e7eaa11e-a6a3-4639-8369-5c507a601bb7,我不確定它是加密的,散列還是Guid。會員文件相當稀少。 – Steve 2010-04-30 11:07:53