Web.configメンバーシッププロバイダのセクションで6として定義されているにもかかわらず、SimpleMembershipProvider MinRequiredPasswordLengthが常に0を返します。
-
12-12-2019 - |
質問
SimpleMembershipProvider
ASP.NET MVC 4アプリで。他のすべてがうまく機能していますが、この問題があります...
このコードを試してみる:
var password = Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0);
.
MinRequiredPasswordLength
は常に0です。メンバーシッププロバイダのWeb.config
セクションで定義されている設定は読み込まれていません。
これはメンバーシップのデフォルトプロバイダWeb.config
セクションです。
<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>
.
これは私が得るデバッグ情報です:
任意のヒント?
SimpleMembershipProvider
では、Web.configセクションを使用しないように単純ですか?
現時点の解決策
SimpleMembershipProvider
の電流制限を克服するために、私は使用しました。このコード 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"]);
. 解決
ASP.NET MVC 4アプリでSimpleMembershipProviderに切り替えました。
ERM、あなたがあなたのweb.configに表示されている関連セクションから、これはまったくそうであるようです。AspNetSqlMembershipProvider
を使用しているSillです。
SimpleMembershipProvider 正しく設定されていることを確認してください。
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider"
type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"
/>
</providers>
</membership>
.
これはSimpleMembershipProviderがweb.configを介してそれらのプロパティの設定をサポートしていないと言われています。それも使用されていません。あなたがそのような機能を望むならば、あなたはそれを自分で実装する必要があるでしょう。
他のヒント
SimpleMembershipProvider
から継承することができ、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;
}
}
}
. 私はこのようにminrequiredpasswordlength="3"をweb.configに入れた場合に見つけました:
<membership defaultProvider="SimpleMembershipProvider" >
<providers>
<clear/>
<add name="SimpleMembershipProvider"
type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData"
minRequiredPasswordLength="3"
/>
</providers>
</membership>
.
効果はありません。 私はモデルの秘密を見つけました.IncountModels.csでは、インターネットアプリケーションテンプレートを作成します。このように、「登録プログラム」があります。
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; }
}
.
passwordプロパティにはStringLength - > minimuthLengthがあります。 私はそれがそうだと思います!
SimpleMermbershipProviderでは、ここでの機能はこちらを参照してください。> http://sharifhkhan.com/プログラミング/機能 - SimpleMembershipProvider /
これがあなたを助けることを願っています。