2009-09-28 3 views
10

나는 기존 커뮤니티 백엔드를 보유하고 있으며 프레젠테이션 계층에 Umbraco를 사용하고 싶습니다. .Net 폼 인증을 사용하여 로그인/로그 아웃을 구현하려면 어떻게해야합니까? 회원 기능을 사용하고 싶지 않습니다. 다른 유형의 페이지에 액세스 할 수있는 사용자 유형이 다릅니다. 이것을 어떻게 제어 할 수 있습니까? 사용자 제어?umbraco 인증

답변

18

Umbraco는 ASP.NET 멤버/역할 공급자 모델을 사용하여 멤버십을 사용합니다 시스템이며, 자체 구현을 위해 기본 설정을 바꾸는 것은 매우 간단한 단계입니다. 과거에 Active Directory 저장소에 대해 구성원을 인증하려고했지만 사용자 지정 데이터베이스에 대해 인증하는 것이 훨씬 어렵다고 상상할 수 없었습니다.

Umbraco 회원 시스템과 완벽하게 통합되고 커스텀 역할 공급자를 사용하면 에디터는 내장 된 페이지 편집 기능을 사용하여 페이지를 제한 할 수 있습니다 자신의 보안 통제.

당신은 UmbracoMembershipProvider 클래스를 확장하고 ValidateUser 방법을 대체하여 간단한 회원 공급자를 만들 수 있어야합니다. 나는이 일을 혼자하지 않았지만 나는 다른 이들을 알고있다.

사용자 지정 역할 공급자에 대해 인증하려면 RoleProvider에서 파생 된 클래스를 만들어야합니다. 당신이 재정에 관심이있을 수 있습니다 방법은 - 대해 isUserInRole, FindUsersInRole, GetAllRolesGetRolesForUser.

여기에는 기본 제공 업체의 소스 코드를 비롯하여 제공자 API에 대한 추가 정보가있는 Scott Guthrie blog post에 대한 링크가 있습니다.

+0

당신의 마음이 내 자신의 회원/역할 공급자 모델을 작성하는 방법에 대해 자세히 설명겠습니까 체크 아웃 할 수 있습니까? –

+0

도움을받을 수있는 공급자 모델에 대한 정보를 추가했습니다. – richeym

1

나는 umbraco 사이트에서 두 가지 접근법을 사용했습니다. 두 방법 모두 사용자 정의 솔루션으로 사용자를 인증하고 자격 증명을 지우는 역할을하는 로그인 및 로그 아웃을위한 사용자 제어를 포함합니다. 또한 두 가지 방법 모두에 대해 umbracoMembersOnly 특성을 보호하려는 모든 문서 형식에 추가합니다.

첫 번째 접근 방식에서는 각 개별 템플릿에서 사용자의 액세스가 제한되었는지 확인했습니다. 이것을 추상화하기 위해 사이트 전체에서 사용할 수있는 isMember 또는 isLoggedIn 메서드를 사용하여 siteuser 클래스를 만들었으며 XSLT 또는 User Control 매크로에서 호출 할 수있었습니다. 이 접근 방식의 이점은 단순히 동일한 액세스 거부 페이지를 제공하는 것보다 각 템플릿에서 맞춤 메시지를 맞춤 설정할 수 있다는 것입니다.

두 번째 방법 - 사용자가 페이지에 액세스 할 수있는 권한을 확인하는 권한 매크로를 만드는 경우 (예 : umbracoMembersOnly 특성을 확인하고, 사실 인 경우 세션을 확인합니다. 변하기 쉬운). 이 매크로는 마스터 템플릿에 포함되므로 모든 템플릿에서 실행됩니다. 사용자가 현재 페이지에 액세스 할 수있는 권한이 없으면 동일한 페이지로 리디렉션되지만? alttemplate = RestrictedPage 또는 유사하게 쿼리 문자열에 추가됩니다. (사용 권한 매크로가 쿼리 문자열에서 alttemplate = RestrictedPage를 확인하는지 확인하십시오. 그렇지 않으면 리디렉션의 무한 루프가 끝납니다.)