يقوم SimpleMembershipProvider MinRequiredPasswordLength دائمًا بإرجاع 0 على الرغم من تعريفه على أنه 6 في قسم موفر عضوية Web.config

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>

إليك معلومات التصحيح التي أحصل عليها:

enter image description here

أي تلميحات؟

هل 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"]);
هل كانت مفيدة؟

المحلول

لقد قمت بالتبديل إلى SimpleMembershipProvider في تطبيق ASP.NET MVC 4.

حسنًا، من القسم ذي الصلة الذي عرضته في ملف web.config الخاص بك، يبدو أن هذا ليس هو الحال على الإطلاق.أنت لا تزال تستخدم AspNetSqlMembershipProvider.

إذا كنت ترغب في التبديل إلى 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>

أن لا أثر.لقد وجدت السر في MODEL. إذا قمت بإنشاء قالب تطبيق إنترنت، في AccountModels.cs يوجد "RegisterModel"، تمامًا مثل هذا:

    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; }
    }

في خاصية كلمة المرور يوجد StringLength->MinimumLength .أنا أعتقد أن هذا هو!

تمت إزالة بعض الميزات في SimpleMembershipProvider، انظر هنا:http://sharifhkhan.com/programming/features-removed-in-simplemembershipprovider/

نأمل أن يكون هذا مساعدتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top