2009-08-18 2 views
4

내 요구를 충족시키지 못했기 때문에 많은 asp.net 회원 정보를 다시 작성해야했습니다. 그래서 내 사용자 지정 확인 방법에서는 실패 할 경우 암호를 확인합니다. 나는 aspnet_membership maxInvalidPasswordAttempts 열을 가져 와서 1을 더한다.web.config에서 maxInvalidPasswordAttempts를 가져 오는 방법은 무엇입니까?

그래서 web.config에서 10으로 설정했습니다. 따라서 web.config에서 값을 가져 와서 사용자가 가지고있는 것과 비교하고 싶습니다. 어떻게해야합니까?

또한 내가이 문을 비교할 때 사용자를 잠그는 경우를 생각해보십시오. 아래 그림과 같이

+0

나는 확실히 MembersateProvider처럼 ValidateUser() 메소드를 체크인 할 것이다. http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.validateuser.aspx – CmdrTallen

답변

2

당신은 제공자의 초기화 방법의 Web.config에서 설정 값을 얻어야한다 : 응용 프로그램에서

public override void Initialize(string name, NameValueCollection config) 
    { 
     if (config == null) 
     throw new ArgumentNullException("config"); 

     // Initialize the abstract base class. 
     base.Initialize(name, config); 

     pApplicationName   = GetConfigValue(config["applicationName"], 
             System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath); 
     pMaxInvalidPasswordAttempts = Convert.ToInt32(GetConfigValue(config["maxInvalidPasswordAttempts"], "5")); 
     // ... 

, 당신은 Membership.MaxInvalidPasswordAttmpts로 참조한다.

full implementation of a custom MembershipProvider on MSDN이 있습니다. 이 예제를 사용하여 몇 시간 내에 공급자를 구현할 수있었습니다.

1

응용 프로그램에서 Membership 클래스의 Providers 컬렉션을 통해 응용 프로그램과 관련된 모든 공급자에 액세스 할 수 있습니다. 그런 다음 관심있는 값의 속성을 사용하십시오.

Membership.Providers["ProviderName"].MaxInvalidPasswordAttempts 

또는 다음을 사용하여 기본 공급자를 얻을 수 있습니다.

Membership.Provider.MaxInvalidPasswordAttempts 

멤버쉽은 System.Web.Security 네임 스페이스에 있습니다.

또 다른 접근 방식은 아마도 자신의 MembershipProvider를 작성하는 것입니다. 얼마나 커스터마이징을 하느냐에 따라, 자신의 공급자에서 모든 커스텀 커맨드 로직을 처리하면 컨트롤러가 더 깨끗해집니다.

+0

흠 아직도 내 자신의 맞춤 멤버십 공급자를 만들어야하는 이유가 없습니다. 내가 약간의 물건을 주변에서 바꿀 때부터 나는 멤버쉽 테이블을 다듬을 수 없으며 단지 내 자신의 솔루션을 정렬 할 수 있을까? 기본적으로 멤버십에있는 모든 것을 무시해야하는 것처럼 내 자신의 공급자를 만들어서 원하는 데이터가 모두 포함 된 내 테이블을 만들면 내게 주어진 것만으로 제한 될 수 있습니까? 내가 멤버십을 좋아하는 것처럼 많은 사람들이 커스텀 화를해야만 자신 만의 커스텀 공급자를 만들만한 가치가있는 것으로 보입니다. 나만의 것을 만들 수도 있습니다. – chobo2

+0

또는 뭔가 빠졌습니다. 그래서 그들은 web.config에서 쉽게 얻을 수있는 방법이 아닙니까? – chobo2

+0

나는 당신의 문제를 더 잘 이해하고 있다고 생각합니다. 당신은 제공자를 작성하지 않았거나 MS 제공자를 랩핑하지 않았습니다. 이 경우 내 대답을 무시하십시오. 사용자 지정 멤버 자격 공급자를 만드는 것이 좋습니다. Visual Studio - 'Projects'메뉴에서 시작된 ASP.NET 구성 응용 프로그램과 함께 작동합니다. 또한 다른 사용자가 다른 모든 사용자와 일관되게 공급자를 사용할 수 있습니다. 기능이 정말 작아 진 경우 25 % ~ 50 % 만 구현하면됩니다. – Chuck

관련 문제