自定义成员资格提供程序中的PasswordFormat抛出NotImplementedException

时间:2017-08-01 09:36:59

标签: c# model-view-controller web-config custom-membershipprovider

在我的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;
    }

1 个答案:

答案 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中设置该值,它也可以在会员密码格式中设置,因为会员资格在应用程序的生命周期内几乎不会发生任何变化。