2012-01-10 4 views
0

여기에 내가 몇 가지 조건에 새 사용자 암호를 제한하려면 다음
ASP 닷넷 회원

<membership> 
     <providers> 
      <clear /> 
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 


내 Web.config 파일입니다 : :


암호 강도 :

  1. 다음 네 가지 범주 중 세 가지 문자를 포함 : (Z 통해 A) 영어 대문자
    영어 소문자 (a부터 z까지)
    자료 10 자리 숫자 (0 ~ 9) 예를 들어
    비 알파벳 문자 (! , $, #, %)
    - 당신이 passwordStrengthRegularExpression이 볼 수 있듯이
  2. 암호가 포함되지 않음 사용자의 계정 이름


내가 Web.config의 자체에서 사용되는 속성 조건 (회원이 제공하는)과 일치하는 조건.
두 번째 조건을 달성하기위한 해결책이 필요합니다. 짧은에서


는 :: 나는 조건에 일치하는 회원을 사용자 정의해야합니다 (문자의 복잡성이 시행 예 :. 암호가 사용자의 계정 이름을 포함하지 않음)

업데이트 : 내가 Eranga 내게 무엇을 제안했다
내 신청서에. 이제는 멤버쉽 createUser가 실패 할 때 (여러 개의 사용자 정의 된 조건에서) 적절한 메시지를 표시하려고합니다.

+0

내 질문이 업데이트되었습니다. 봐라. – RollerCosta

답변

3

기본 공급자의 하위 클래스를 사용하고 ValidatingPassword 이벤트를 처리 할 수 ​​있습니다. 두 번째 기준에 맞지 않으면 유효성 검사를 취소 할 수 있습니다.

public class MyMembershipProvider : SqlMembershipProvider 
{ 
    public MyMembershipProvider() 
    { 
     ValidatingPassword += ValidatePassword; 
    } 

    void ValidatePassword(object sender, ValidatePasswordEventArgs e) 
    { 
     if (e.Password.Contains(e.UserName)) 
     { 
      e.Cancel = true; 
      e.FailureInformation = new Exception("blah blah"); 
     } 
    } 
} 

귀하의 Web.Config 파일은 다음을 포함해야한다. type 특성에 대한 사용자 지정 멤버십 클래스의 전체 이름을 지정해야합니다.

<membership> 
     <providers> 
      <clear /> 
      <add name="MyMembershipProvider" type="MyNamespace.MyMembershipProvider" connectionStringName="ApplicationServices" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 
+0

당신은 멤버쉽을 사용자 정의하는 것을 의미합니까? 어떻게 web.config 파일에서 그 서브 클래스를 사용할 수 있습니까 ?? – RollerCosta

+0

@Kannas 예. 그것의 아주 간단 :) – Eranga

+0

고맙은 eranga 나는 그것이 나를 위해 작동하는지 당신에게 알려주겠습니다. web.config에 필요한 변경 사항 제안 가능 – RollerCosta

1

그것은 MVC 아니지만, 당신은 정적 이벤트를 오버라이드 (override)의 this example 볼 수 있습니다. 또한 기본적으로 the same question you asked before이므로 약간의 세부 사항 만 추가하면 원래 질문을 업데이트 할 수 있습니까?