2013-06-26 3 views
1

DotNetNuke.Security.Membership.MembershipProvider를 기본으로 사용하는 사용자 지정 MembershipProvider를 만들었습니다. 우리의 구현에서 CRM 시스템은 모든 웹 사이트에 연결할 수있는 사용자의 모든 연락처 데이터를 저장하므로 CreateUser 및 DeleteUser와 같은 기능이 구현되지 않습니다. MembershpProvider는 인증, 멤버쉽 만 처리하고 CRM 시스템의 데이터로 UserInfo 객체를 반환합니다.DotNetNuke PersonalizationController 아키텍처/교체

잘 작동합니다.

내가 겪고있는 문제는 PersonalizationController입니다. 우리의 CRM 시스템은 사용자/연락처에 관한 정보를 저장하지만 사용자의 개인 설정에 대해서는 저장하지 않습니다. DNN이 PersonalizationController/PersonalizationModule (예 : 프로필 테이블)에 정의 된 개인화 설정을 계속 저장하고 싶습니다. 문제는 DataProvider에서 LoadProfile() 저장 프로 시저를 호출하면 업데이트가 실패한 것입니다. 왜냐하면 Profile 테이블에 UserId가 User 테이블에 이미 추가되도록 요구하는 제약 조건이 있기 때문입니다. 이 외래 키 관계를 수정할 수는 있지만 좋은 아키텍처는 아닙니다.

그래서이 질문에 :이 상황에서 좋은 아키텍처 선택은 무엇입니까?

MembershipProvider 및 DataProvider는 제공자 모델을 따르므로 대체 할 수 있지만 DataProvider를 바꾸지는 않습니다. PersonalizationController는 공급자 모델을 따르지 않으므로 쉽게 대체 할 수 없습니다. 저장 프로 시저 또는 외래 키를 업데이트하면 잠재적으로 업그레이드 문제가 발생할 수 있습니다 (또는 적어도 나중에 디버깅을 수년 동안 힘들게 만들거나 훌륭한 설명서가 필요함). 마찬가지로 소스 코드를 변경하는 것과 마찬가지로 (단순히 DataProvider.Instance(), AddProfile (userId, portalId); PersonalizationController 행을 업데이트 할 수 있습니다. 먼저 사용자를 Users 테이블에 추가하라는 호출이 있습니다 (불필요합니다. 이론적으로 User와 aspnet_Users 테이블의 차이점은 외래 키로 인해 불필요하지만 User 레코드를 추가하는 것이 좋습니다. 또한 Members 테이블을 Person 테이블에 삽입하여 업데이트 할 수 있습니다. 현재 생각하고있는 것이지만 (실제로는 원하지는 않지만)

공급자 모델을 사용하여 PersonalizationController를 어떻게 대체 할 수 있습니까? 아니면 업그레이드 또는 관리 문제를 최소화 할 수있는 방법은 무엇입니까? 언제든지 DNN을 새로 설치하고 모든 모듈/제공자/스킨을 설치하는 시스템을 구축하려고합니다. 그것을 복제하고 기존 시스템을 복제합니다 (물론 내용없이).

이 상황에서 권장되는 방법/권장 아키텍처는 무엇입니까?

미리 감사드립니다.

그렉

답변

0

당신이 많은 다른 모듈이 사용자 테이블에 미칠 수있는 그 키를 모두 활용할 수 있도록 DNN 데이터베이스의 사용자 ID를 유지하는 감각을 만들 것이다. 사용자 ID가 없으면 모듈 문제가 발생할 가능성이 높습니다.

DNN 용 AD 공급자는 DNN 사용자를 만들고이 사용자를 최대 AD 사용자와 일치시켜이 문제를 해결합니다.

+1

내가 그쪽으로 기울어 진 부분입니다. 이 문제는 단지 ID (base36 및 2 테이블 - 연락처 및 사용자)와 정확히 어떻게 그렇게 할 수 있는지에 대한 것이므로 깔끔하게 (쉽게 운송 할 수 있음) 꽂을 수있었습니다. AD 제공자 소스를 살펴 보겠습니다. 감사! – Greg