문제

웹 사이트에서는 멤버십 및 인증을 통합해야합니다. 따라서 ASP.NET 멤버십의 기능을 사용하고 싶지만 "사용자"가해야 할 다른 사용자 지정 사항이 있습니다.

그래서 나는 내 연필과 종이로 여기에 앉아 도메인 모델의 선을 그리며 ... ASP.NET 멤버십을 가장 잘 활용할 수 있지만 내 요구를 충족시키기 위해 확장 할 수있는 방법은 무엇입니까?

멤버십 사용자에서 물려받은 클래스를 만들어 내 자신의 속성과 방법으로 확장하고이를 분리 된 테이블에 저장하십시오). 아니면 멤버십 사용자를 사용자 정의 사용자/클라이언트 객체의 속성으로 만들어야합니까?

이것을하는 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

나는 그것에 대해 생각했고 적절해 보이는 두 가지 방법이 있습니다 (물론 작동하는 방법이 더 있습니다).

맞춤형 멤버십 제공 업체

멤버십 제공 업체를 변경하여 직접 사용하고 사용자 객체를 사용하여 모든 정보를 저장합니다.

이것의 문제는 ASP.NET이 이미 잘 처리 한 것들에 대한 많은 재 구현을 포함한다는 것입니다. 좋은 점은 모든 세부 사항이있는 단일 사용자 객체가 있다는 것입니다.

멤버십 사용자에서 사용자에게 연결합니다

이 메소드를 사용하면 원래 멤버십 제공 업체를 사용하여 사용자 이름과 비밀번호를 처리하지만 예를 들어 서비스를 사용하여 사용자 이름과 사용자 이름을 사용자 이름과 연결합니다.

설정하기가 정말 쉽습니다. 다음과 같이 사용되는 서비스 만 만들면됩니다.

string userName = "Jon Skeet";
User user = new UserManagementServices().GetUserByUserName(userName);

다른 팁

나는 내 자신의 멤버십 제공자를 작성했으며 현재 3 개의 별도 솔루션으로 구현했습니다. 사용자를 멤버십 사용자에게 연결하는 것보다 매우 간단하고 훨씬 우아합니다 (또한 시도한).

이것을 읽으십시오 ... :

ASP.NET 웹 사이트 보안을위한 사용자 정의 멤버십 제공 업체를 만듭니다

더 배우고 싶다면 지켜보십시오 이 비디오 (sourcecode 포함).

나는 멤버쉽을 확장하고 내 자신의 버전의 SQLMembershipprovider를 만들어 기존 도메인에 매핑하고 현재 제작에서 잘 작동합니다.

Membershipuser는 본질적으로 내 사용자 테이블 위의 뷰입니다. 내 확장 된 멤버쉽 사용자 클래스에는 기본 SQLProfileProvider 시스템을 사용하는 대신 프로파일/계정 스타일 속성이 포함되어 있으며, 이는 약간 깨지기 쉽습니다.

기존 회원 테이블이나 스프로스를 사용할 수 없었지만 내 자신을 썼습니다. 예를 들어, sqlmembershipprovider는 안내를 불투명 키로 사용하지만 생산 시스템은 일반 구식 INT를 사용합니다. 모든 날짜는 UTC 등입니다.

모든 추가 사용자 기능은 멤버십 메소드가 아닌 사용자 도메인을 통해 액세스됩니다.

HTH.

나는 현재 Microsoft ASP.NET 2.0 멤버십 API 확장 Code Magazine의 기사는 기존 클래스에 래퍼를 작성하여 멤버십 API를 확장하는 방법을 설명합니다. 주요 이점은 모든 상자 기능을 유지할 수 있고 사용자 정의 제공 업체를 구현할 때와 같이 자신의 것을 다시 작성할 필요가 없다는 것입니다. 소스 코드가 제공됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top