2014-05-13 40 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提供程序中的所有相关方法,使用它们“围绕”等同于外部数据库的调用。