Web.configメンバーシッププロバイダのセクションで6として定義されているにもかかわらず、SimpleMembershipProvider MinRequiredPasswordLengthが常に0を返します。

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

質問

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 /

これがあなたを助けることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top