在我的Custom member ship提供程序中,我提供了ValidateUser的实现,到目前为止一切正常,但现在突然密码已经开始抛出了
NotImplementedException未被用户代码
处理
我的web.config或自定义成员资格没有变化。一些堆栈溢出的答案是指在Web.config中添加system.web下的角色管理器,但它对我没有用。另外,我尝试过Josh here建议的答案,但仍然没有区别。我正在使用Hexa十进制编码。
除了ValidateUser之外,其他任何一个都没有在我的自定义成员资格中实现,如下所示
public override bool ValidateUser(string username, string password)
{
LoginModel model = new LoginModel
{
UserName = username,
Password = password,
ErrorMessage = ""
};
User user = UserManager.AuthenticateUser(model);
if (user != null)
{
HttpContext.Current.Items.Add("User", user);
return true;
}
return false;
}
答案 0 :(得分:0)
如果其他人需要,请在此处分享我的解决方案。
可以在Web配置中定义PasswordFormat值,然后通过在MembershipPasswordFormat的PasswordFormat中读取其值来提供实现,如here所述。
public override MembershipPasswordFormat PasswordFormat
{
string temp_format = config["passwordFormat"];
if (temp_format == null)
{
temp_format = "Hashed";
}
switch (temp_format)
{
case "Hashed":
passwordFormat = MembershipPasswordFormat.Hashed;
break;
case "Encrypted":
passwordFormat = MembershipPasswordFormat.Encrypted;
break;
case "Clear":
passwordFormat = MembershipPasswordFormat.Clear;
break;
default:
throw new ProviderException("Password format not supported.");
}
}
如果有人不想在web.config中设置该值,它也可以在会员密码格式中设置,因为会员资格在应用程序的生命周期内几乎不会发生任何变化。