SimplemembershipProvider MinreQueredPasswordLength restituisce sempre 0 nonostante sia definito come 6 nella sezione Provider di iscrizione web.config
-
12-12-2019 - |
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.config
Gode 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:
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"]);
. 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.