0

扔在我的自定义成员船供应商我对的ValidateUser和事物提供的实现是迄今罚款,但现在突然了passwordFormat已经开始投掷NotImplementedException通过了passwordFormat在定义成员资格提供

NotImplementedException是由用户代码

未处理

我的web.config或自定义成员身份没有变化。一些堆栈溢出问题的答案是在Web.config中的system.web下添加角色管理器,但它对我无效。另外,我尝试了Josh here提出的答案,但仍然没有区别。我正在使用十六进制编码。其他除的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

在这里分享我的解决办法的情况下,如果有人需要它来实现。

可以在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中的值,它也可以在会员密码格式为会员的东西很难在应用程序的生命周期的每个改变设置。

相关问题