SimplemembershipProvider MinreQueredPasswordLength restituisce sempre 0 nonostante sia definito come 6 nella sezione Provider di iscrizione web.config

StackOverflow https://stackoverflow.com//questions/12702649

Domanda

Sono passato a SimpleMembershipProvider in un'app ASP.NET MVC 4. Tutto il resto funziona alla grande, ma c'è questo problema ...

Quando provo questo codice:

var password = Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0);
.

MinRequiredPasswordLength è sempre 0. Le impostazioni definite nella sezione Web.configGode del fornitore dell'iscrizione non vengono lette.

Ecco il provider di default dell'iscrizione Web.config section:

<membership defaultProvider="AspNetSqlMembershipProvider">
    <providers>
         <clear />
             <add name="AspNetSqlMembershipProvider"
                  type="System.Web.Security.SqlMembershipProvider"
                  connectionStringName="DefaultConnection"
                  enablePasswordRetrieval="false"
                  enablePasswordReset="true"
                  requiresQuestionAndAnswer="false"
                  requiresUniqueEmail="false"
                  maxInvalidPasswordAttempts="5"
                  minRequiredPasswordLength="6"
                  minRequiredNonalphanumericCharacters="0"
                  passwordAttemptWindow="10"
                  applicationName="/Acad" />
    </providers>
</membership>
.

Ecco le informazioni di debug che ottengono:

Inserisci Descrizione dell'immagine qui

Qualche suggerimento?

Il SimpleMembershipProvider è così semplice che non usa nemmeno la sezione Web.config?

Soluzione per il momento

Per superare la limitazione della corrente di SimpleMembershipProvider, ho usato Questo codice per afferrare il valore definito in Web.config:

MembershipSection membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership");
var defaultProvider = membershipSection.DefaultProvider;
ProviderSettings providerSettings = membershipSection.Providers[defaultProvider];
var minRequiredPasswordLength = int.Parse(providerSettings.Parameters["minRequiredPasswordLength"]);
.

È stato utile?

Soluzione

.

Sono passato a SimplemembershipProvider in un'app ASP.NET MVC 4.

ERM, dalla sezione pertinente che hai mostrato nel tuo web.config, questo non sembra affatto il caso.Sei davanzare usando il AspNetSqlMembershipProvider.

Se si desidera passare a simplemembershipprovider Assicurarsi di averlo configurato correttamente:

<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider"
         type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"
    />
  </providers>
</membership>
.

Questo è detto che il simplemembershipprovider non supporta impostando quelle proprietà via web.config.Non lo usa nemmeno.Se vuoi tale funzionalità dovrai implementarlo da solo.

Altri suggerimenti

È possibile ereditare da SimpleMembershipProvider e sovrascrittura MinRequiredPasswordLength:

public class YoursSimpleMembershipProvider : SimpleMembershipProvider
{
    private const int MIN_REQUIRED_PASSWORD_LENGTH = 6;

    private const int MIN_REQUIRED_NON_ALPHANUMERIC_CHARACTERS = 0;

    public override int MinRequiredPasswordLength
    {
        get
        {
            return MIN_REQUIRED_PASSWORD_LENGTH;
        }
    }
}
.

Ho trovato se metto MinrequireredPasswordLength="3" in Web.config, come questo:

<membership defaultProvider="SimpleMembershipProvider" >
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" 
         type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData"
         minRequiredPasswordLength="3"
    />
  </providers>     
</membership>
.

che nessun effetto. Trovo il segreto in Model.Se crei un modello di applicazione Internet, in accountModels.cs C'è un "regiserModel", proprio come questo:

    public class RegisterModel
    {
        [Required]
        [Display(Name = "用户名")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "确认密码")]
        [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
        public string ConfirmPassword { get; set; }
    }
.

Nella proprietà PASSWORD ha una Lunghezza della riga-> MinignLength. Penso che sia!

Alcune funzionalità rimosse in Simplemembershipprovider, consulta qui: http://sharifhkhan.com/Programmazione / funzionalità-rimossa-in-simplemembershipprovider /

Spero che questo ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top