Asp.net 如何检索成员资格';密码应答
它被装在桌子里。我不想重置密码。 我有一个解决办法 但我不确定 基本密码 因为我有一个错误,找不到它 再次更新:Asp.net 如何检索成员资格';密码应答,asp.net,sql-server,security,Asp.net,Sql Server,Security,它被装在桌子里。我不想重置密码。 我有一个解决办法 但我不确定 基本密码 因为我有一个错误,找不到它 再次更新: updated my code: public class FalseMembershipProvider: MembershipProvider { public string GetPasswordAnswer(Guid providerUserKey) { Microsoft.Practices.EnterpriseLibrary.Data.D
updated my code:
public class FalseMembershipProvider: MembershipProvider
{
public string GetPasswordAnswer(Guid providerUserKey)
{
Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase();
using (System.Data.Common.DbCommand cmd = db.GetSqlStringCommand("SELECT PasswordAnswer FROM aspnet_Membership WHERE UserID=@UserID"))
{
db.AddInParameter(cmd, "@UserId", DbType.Guid, providerUserKey);
object answer = db.ExecuteScalar(cmd); if (answer != null)
return ProviderDecryptor(answer.ToString());
else
return null;
}
db = null;
}
internal string ProviderDecryptor(string encryptedText)
{
string decrypted = null;
if (!string.IsNullOrEmpty(encryptedText))
{
byte[] encodedbytes = Convert.FromBase64String(encryptedText);
byte[] decryptedbytes = base.DecryptPassword(encodedbytes);
if (decryptedbytes != null)
decrypted = System.Text.Encoding.Unicode.GetString(decryptedbytes, 16, decryptedbytes.Length - 16);
}
return decrypted;
}
}
该类是从
成员资格提供程序继承的。正在调用的方法为。但是,正如您在MSDN页面上看到的,它是一种受保护的方法。通过从MembershipProvider
导入,这个新类可以使用base.DecryptPassword
,它实质上是说“调用MembershipProvider的DecryptPassword方法。即使该方法受到保护,我也可以调用它,因为我从MembershipProvider类继承了权限”
您正在编写的类需要从MembershipProvider
继承,正如作者在示例中所做的那样:
public class FalseMembershipProvider : MembershipProvider
如何添加它,因为我已经内在的东西?示例:public partial class EditInfo:System.Web.UI.page您只需创建一个新类并从页面调用它即可。它不必添加到您当前的类中。有一大堆错误。例如“FalseMembershipProvider”不实现继承的抽象成员System.Web.Security.MembershipProvider.FindUserByEmail(string,int,int,out int)'等等。您必须实现其他必需的方法。右键单击MembershipProvider,然后单击实现抽象类
。您可以填写所需的方法。此处有详细信息。为什么要实现自定义提供程序来恢复密码?如果您只想重新获取密码,您不能使用PasswordRecove吗ry控件?不,我没有恢复密码。我的意思是找到passwordanswer。例如,问题:你的faviour颜色是什么?回答:红色。答案在表中散列。passwordanswer不是密码本身。即使我右键单击“实现抽象类”,错误仍然存在。