SimpleMembershipProvider MinRequiredPasswordLength는 Web.config 멤버십 공급자 섹션에서 6으로 정의되었음에도 불구하고 항상 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로 전환했습니다.
음, 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;
}
}
}
다음과 같이 web.config에 minRequiredPasswordLength="3"을 입력하면 발견되었습니다.
<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; }
}
Password 속성에는 StringLength->MinimumLength 가 있습니다.내 생각엔 그럴 것 같아!
SimpleMembershipProvider에서 일부 기능이 제거되었습니다. 여기를 참조하세요.http://sharifhkhan.com/programming/features-removed-in-simplemembershipprovider/
이것이 당신에게 도움이 되기를 바랍니다.