2009-08-02 1 views
11

asp.net에서 멤버십을 확장하는 방법에 대해 궁금합니다.Asp.net에서 멤버십을 확장하는 방법은 무엇입니까?

사용자가 로그인 할 때 UserName과 Password를 확인하고 싶습니다. 물론 표준 asp.net 멤버쉽이 이것을 수행합니다 (이것은 ValidateUser()입니다).

"기관"이라는 다른 입력란을 확인하고 싶습니다. 사용자가이 상자에 내용을 입력하면 "기관", "사용자 이름"및 "암호"가 데이터베이스에있는 것과 일치하는지 확인하려고합니다.

사용자가 "교육 기관"을 비워두면 asp.net에서 제공되는 기본 ValidateUser() 메소드를 사용하고 "userName"및 "password"만 선택하면됩니다.

그래서 ValdiateUser() 메서드를 오버로드 할 수 있습니까? 아니면이 새로운 사례를 처리하기 위해 자체적으로 작성해야합니까?

어디에서이 "기관"필드를 데이터베이스에 저장할 수 있습니까? 나는 "Profile"테이블을 추천하는 사람들에 관해 뭔가 들었지만 잘 모르겠습니다. ABC 사용자 이름 : A09410515 비밀 번호 : 1234567

기관 : GHA 사용자 이름 : A09410515 비밀 번호 : 1234567

또한 어떻게 3 다른 사용자

기관 이러한 치료에 회원을 변경할 수 있습니다

사용자 이름 : A09410515 비밀번호 : 1234567

그래서 데이터베이스는 이들이 3 명의 고유 한 사용자가되어야한다고 우려해야합니다. 물론 내 데이터베이스에 이미 동일한 정보가 저장되어있는 경우에도 마찬가지입니다.

예를 들면.

기관 : ABC 사용자 이름 : A09410515 비밀 번호 : 1234567

누군가가 "사용자 이름"과 "기관"다음은 중복 된 이름 인에 대한 오류를 다시 침을 것에 대한 동일한 정보를 등록하려고합니다.

답변

15

예, 사용자는 create a custom membership provider이 될 수 있습니다. 제공자는 MembershipProvider을 구현하여 회원 시스템과 확장 데이터베이스 스키마 간의 인터페이스를 완전히 제어 할 수 있습니다. Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site이 자세한 예입니다.

+0

안녕하세요 감사합니다. 나는 아직도 약간 혼란 스럽다. 추가 할 필드는 어디에 저장해야합니까? 내가 그것을 프로파일에 추가하는 것과 같이 또는 무엇? 마찬가지로 내 asp.net db와 db를 병합 할 수 있도록 사용자 지정 공급자를 만들고 있지만 mssql 서버를 사용하고 있습니다. 나는 또한 그 방법을 오버라이드 것으로 나타났습니다. 나는 여전히 기본 검증 방법을 사용하고 싶다. 그래서 2 오버로드 메서드를 만들 수 있습니다. 하나는 내 사용자 정의 확인 및 하나의 방법은 기본 확인 메서드를 호출? – chobo2

2

이렇게하는 게으 른 방법은 기관과 사용자 이름을 함께 사용하여 실제 사용자 이름을 만드는 것입니다. ABC & A09410515, GHA & A09410515 및 & A09410515 :

따라서 당신은 3 별개의 사용자 이름이있을 것이다. 사용자가 사용자 이름에 &을 사용하는 것을 허용하지 마십시오.

그런 다음 사용자를 만들거나 로그인하기 전에 두 문자열을 결합하면됩니다.

는 ('&'는) [1]), 그러나 JP의 게시물은 확실히 내가 예를 들어, 사용자 이름 ( username.split을 사용하여 표시 (간단한 해킹으로 고정 할 수없는 중요한 문제를 생각할 수 없다

입니다 그것을하는 "올바른 방법".

제임스는

1

당신은 당신이 다른 응용 프로그램

로드리고을에 동일한 사용자 이름을 가질 것이다 기관으로 그 방법을 응용 프로그램 이름을 사용할 수 있습니다.