2013-05-30 2 views
0

MVC 4의 멤버쉽 공급자에 대한 변경 사항과 관련하여 다양한 SO 질문, 블로그 게시물 등을 둘러 보았습니다. 많은 변경 사항과 단순화 (특히 기본 제공) 외부 로그인 지원), 나는 아직 겉으로는 단순한 것을 찾지 못했습니다 ...데이터베이스가없는 사용자 지정 멤버쉽 공급자 *?

다른 데이터 소스를 사용하는 사용자 정의/역할 공급자를 어떻게 재정의 할 수 있습니까?

WebSecurity 또는 내가 처리하고 싶은 모든 것을 처리하기 때문에 과감한 것을 대체하고 싶지 않습니다. (예 : 쿠키 관리). 외부 로그인 공급자에 대한 기존 지원을 깨뜨릴 수있는 일을하고 싶지 않습니다. 내 응용 프로그램이 로컬 로그인과 함께 사용하는 응용 프로그램을 사용하기 때문입니다. 내가하고 싶은 것은 회원 시스템과 그 뒤에있는 데이터베이스 사이에 끼어 들며 데이터 가져 오기를 사용자 정의하는 것입니다.

  • USERPROFILE에게
  • webpages_UsersInRoles

  • webpages_Membership
  • webpages_OAuthMembership
  • webpages_Roles 그리고 그 작동하는 동안, 나는 원인이 : 그것은 기본적으로 생성

    테이블은 압박하다 ct를 사용자 정의 객체 뒤에 숨기고 응용 프로그램과 데이터베이스 간의 연결을 끊습니다. (기본적으로 비즈니스 로직으로 가득 찬 커스텀 도메인 모델을 가지고 있으며, 멤버쉽/롤 시스템에서 데이터베이스 대신 이들 모델을 사용하기를 원합니다. 이러한 모델은 데이터베이스에서 영구 데이터를 가져올 수 있습니다. do not 상관 없습니다.)

    사용자 정의를 위해 찾은 대부분의 참조는 쉽게 할 수 있다고 주장합니다. 즉, UserProfile 모델을 수정하고, 새 사용자 정의 필드를 다양한 호출에 포함시키고, 업데이트해야합니다. 내 데이터베이스 스키마를 가리 키도록 InitializeDatabaseConnection에 대한 호출.

    하지만 데이터베이스를 사용하고 있지 않습니다. (또는 더 구체적으로 말하면 응용 프로그램 계층에 관한 한 데이터베이스와 같은 것이 없습니다. 내 도메인 모델 만 있습니다.) 따라서 쉽게 사용자 지정하면 실제로 아무 것도 변경되지 않습니다.

    기존 멤버십 공급자에 대한 사용자 지정 데이터 공급자를 만들 수 있도록 멤버십 시스템과 데이터베이스를 중개하는 방법이 있습니까?

  • 답변

    1

    사용자 정의 SimpleRoleProvider를 작성하고이 같은 뭔가의 Web.config를 수정하여 응용 프로그램에 연결 할 수 있어야한다 :

    MyCustomRoleProvider가
    <add name="SimpleRoleProvider" type="MyCustomRoleProvider.SimpleRoleProvider, MyCustomRoleProvider"/> 
    

    어셈블리의 이름이 포함 된 SimpleRoleProvider 구현.

    그런 다음 SimpleMembership에 대한 초기화를 제거하십시오. This articleSimpleMembership에 대한 초기화 프로세스를 단순화하는 방법을 설명합니다. 기본적으로 InitializeSimpleMembership AccountController 특성을 제거하고 초기화를 Global로 이동하십시오.asax Application_Start 메소드. 그러나 필요한 경우 사용자 정의에 필요한 초기화를 추가하고자 할 것입니다. SimpleRoleProvider (필요한 경우).

    구현에 대한 설명은 사용자 정의 SimpleMembershipProvider을 작성해야 할 가능성이 높습니다.