2009-09-28 138 views
10

我有一個現有的社區後端,我喜歡使用Umbraco作爲我的表示層。如何使用.Net表單身份驗證實現登錄/註銷? (我不想使用成員功能)。我有不同類型的用戶可以訪問不同類型的頁面。我怎樣才能控制這個?用戶控制?umbraco身份驗證

回答

18

Umbraco使用ASP.NET成員/角色提供程序模型獲取成員資格系統,這是一個非常簡單的步驟,將默認的一個交換爲您自己的實現。過去我曾經在這裏做過這些工作,我想根據Active Directory存儲對成員進行身份驗證,但我無法想象要對自定義數據庫進行身份驗證會更困難。

這樣做的好處是您可以與Umbraco會員系統完全集成,並且通過使用自定義角色提供程序,編輯人員將能夠使用內置的頁面編輯功能來限制頁面,而不必使用鉤子您自己的安全控制。

您應該能夠通過擴展UmbracoMembershipProvider類並覆蓋的ValidateUser方法來創建一個簡單的成員提供。我自己並沒有這樣做,但我知道其他人。

要針對自定義角色提供者進行身份驗證,您需要創建一個從RoleProvider派生的類。你會想要替換的方法是 - 的isUserInRoleFindUsersInRoleGetAllRolesGetRolesForUser

下面是Scott Guthrie blog post的鏈接,它提供了有關提供者API的更多信息,而且您將不需要知道這些信息,包括默認提供者的源代碼。

+0

請問你心中對如何創建自己的會員/角色提供者模型詳細點嗎? – 2009-09-30 05:45:10

+0

已經添加了一些有關提供者模型的更多信息,希望能夠幫助您。 – richeym 2009-09-30 09:45:17

1

我在我的umbraco網站上使用了兩種方法。這兩種方法都包括用於登錄和註銷的用戶控件,它們負責使用自定義解決方案對用戶進行身份驗證,並分別清除憑證。對於這兩種方法,我還補充了一個umbracoMembersOnly屬性,用於我想保護的任何文檔類型。

在第一種方法中,我讓每個單獨的模板檢查用戶是否被限制訪問。爲了抽象這一點,我創建了一個site.com類,其中包含isMember或isLoggedIn方法,該方法可在站點範圍內使用,並且可以從XSLT或用戶控件宏中調用。這種方法的好處是我可以在每個模板上定製自定義消息,而不僅僅是提供相同的拒絕訪問頁面。

第二種方法 - 我現在喜歡的 - 如果要創建一個權限宏,它負責檢查用戶訪問任何頁面的權限(即檢查umbracoMembersOnly屬性,如果爲true,則檢查會話變量)。該宏被包含在主模板中,並在每個模板上執行。如果用戶沒有權限訪問當前頁面,我將重定向到同一頁面,但是在查詢字符串後附加了?alttemplate = RestrictedPage或類似內容。 (請確保您的權限宏檢查查詢字符串中的alttemplate = RestrictedPage,否則您將以無限循環的重定向結束。)