2014-05-13 78 views
2

我們需要使用現有的外部數據庫滿足我們的會員需求。該數據庫將包含驗證和授權用戶所需的所有基本信息。我期待看看你是否有文檔可以指導我完成這個過程。我已經在網上看到過自定義會員供應商的實施。但是我還沒有看到有關如何將自定義成員資格提供程序與Sitecore API集成的示例,因此Sitecore.Context.User將返回登錄用戶的信息。Sitecore定製會員供應商

另外,有沒有辦法通過Sitecore API訪問自定義配置文件信息?

謝謝

+0

此數據庫是否也會驗證sitecore後端的編輯者或僅用於網站訪問?因爲重要的是你當然不會破壞Sitecore功能,並且設置交換會員提供商並不那麼簡單,因爲文檔中缺少一些信息(或者我至少找不到) – IvanL

+0

這是用於網站身份驗證只要。 Sitecore登錄需要保持原樣。 – Gabbar

+0

在這種情況下,您最好設置切換會員供應商。我會發佈一個答案,我們如何爲我目前正在進行的項目做到這一點。 – IvanL

回答

2

正如我在這裏評論中所承諾的那樣,我們的設置可以使Sitecore設置保持不變,同時添加額外的會員供應商以專門用於您的網站。

首先這可以在我們的web.config裏面可以找到下<system.web>轉換文件:

<membership hashAlgorithmType="SHA256" xdt:Transform="SetAttributes(hashAlgorithmType)"> 
    <providers> 
    <add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="switcher" providerWildcard="%" raiseEvents="true" xdt:Locator="Match(name)" xdt:Transform="Replace" /> 
    <add name="myprovider" type="MyProject.SecurityProviders.MembershipProvider, MyProject.SecurityProviders" applicationName="sitecore" xdt:Transform="Insert"/> 
    </providers> 
</membership> 
<roleManager> 
    <providers> 
    <add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true" xdt:Locator="Match(name)" xdt:Transform="Replace" /> 
    <add name="myprovider" type="MyProject.SecurityProviders.RoleProvider, MyProject.SecurityProviders" applicationName="sitecore" xdt:Transform="Insert"/> 
    </providers> 
</roleManager> 

下一頁這是在一個單獨的配置中發現的包含文件直屬<sitecore>

<switchingProviders> 
    <membership> 
    <provider providerName="myprovider" storeFullNames="false" wildcard="%" domains="websitedomain" patch:before="*"/> 
    </membership> 
    <roleManager> 
    <provider providerName="myprovider" storeFullNames="false" wildcard="%" domains="websitedomain" patch:before="*"/> 
    </roleManager> 
</switchingProviders> 

這些2配置更改將使您能夠創建自定義成員資格和角色提供程序(以防您需要)。正如您所看到的那樣,棘手的部分並不是讓sitecore的交換成員資格提供者成爲默認提供者(如文檔2.6.2中所述),而是將sitecore提供者的realProviderName設置爲switcher

從hereon可以直接實現ASP.NET Membership。

+0

非常感謝!我確實設置了一個提供程序,但我不知道realProviderName屬性。 – Gabbar

+0

如果我有自定義域,那麼設置是什麼? – Gabbar

+0

您的網站的域設置在第二部分配置中,您在哪裏說您的自定義提供程序將處理請求的域。例如我使用:'domains =「websitedomain」' – IvanL

1

您已經看到這份文件了嗎?

A Developer's Guide to Integrating Authentication Systems with Sitecore

它談論您完成創建ASP.net成員提供的全過程。提供者的要點是它從實現中抽象出API,所以你一定能夠實現你所需要的。

本質上,您需要覆蓋基本ASP.Net提供程序中的所有相關方法,使用它們「圍繞」等同於外部數據庫的調用。