gpt4 book ai didi

asp.net成员(member)sitecore

转载 作者:行者123 更新时间:2023-12-01 02:20:23 24 4
gpt4 key购买 nike

我正在将一个 ASP.NET 网站迁移到 Sitecore 7。我有一个供外部用户登录我的网站的登录页面。我正在尝试访问外部 aspnetdb 来执行此身份验证。我遵循了这篇文章中的内容:

Sitecore authenticate users against external membership database

当我尝试调用 GetUser 方法时,我得到一个空值。此外,当我转到我的用户管理器时,我在 aspnetdb 中看不到任何用户。

我的配置概述如下:

我在 ConnectionsStrings.config 中添加了一个连接字符串:

  <add name="test" connectionString="user id=***;password=***;Data Source=localhost;Database=aspnetdb"/>

在我的 web.config 中,我添加了成员​​资格和角色提供者定义:
<membership defaultProvider="sitecore" hashAlgorithmType="SHA1">
<providers>
<clear/>
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="switcher" providerWildcard="%" raiseEvents="true"/>
<add name="sql" type="System.Web.Security.SqlMembershipProvider" connectionStringName="core" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="256"/>
<add name="switcher" type="Sitecore.Security.SwitchingMembershipProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/membership"/>
<add name="testProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="test" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="256"/>
</providers>
</membership>
<roleManager defaultProvider="sitecore" enabled="true">
<providers>
<clear/>
<add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true"/>
<add name="sql" type="System.Web.Security.SqlRoleProvider" connectionStringName="core" applicationName="sitecore"/>
<add name="switcher" type="Sitecore.Security.SwitchingRoleProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/roleManager"/>
<add name="testProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="test" applicationName="sitecore"/>
</providers>
</roleManager>

然后我添加了我的域切换器映射:
<switchingProviders>
<membership>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*"/>
<provider providerName="testProvider" storeFullNames="false" wildcard="%" domains="extranet"/>
</membership>
<roleManager>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*"/>
<provider providerName="testProvider" storeFullNames="false" wildcard="%" domains="extranet"/>

</roleManager>
<profile>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*"/>
</profile>
</switchingProviders>

任何帮助将不胜感激。

谢谢。

最佳答案

在您的成员资格和角色提供者定义中,您需要将 defaultProvider 更改为切换器。这意味着当 Sitecore 尝试确定要使用的提供程序时,它将使用您的切换提供程序中的配置。

此外,我认为您应该更改switchingproviders 的顺序,以便“外联网”高于您的所有“*”。

编辑此配置适用于我的环境:

<membership defaultProvider="switcher" hashAlgorithmType="SHA1">
<providers>
<clear />
<add name="Extranet" type="System.Web.Security.SqlMembershipProvider" connectionStringName="Extranet" applicationName="sitecore" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0"/>
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="sql" providerWildcard="%" raiseEvents="true" />
<add name="sql" type="System.Web.Security.SqlMembershipProvider" connectionStringName="core" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="256" />
<add name="switcher" type="Sitecore.Security.SwitchingMembershipProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/membership" />
</providers>
</membership>

而对于switchingProvider:
<switchingProviders>
<membership>
<provider providerName="Extranet" storeFullNames="false" wildcard="%" domains="extranet" />
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
</membership>

如果您返回 Extranet\Anonymous 并且此用户不在您的自定义数据库中,则您实际上使用的是标准 Sitecore 数据库。确保 defaultProvider 设置为“switcher”,并且您首先在交换提供程序中有您的提供程序并且它提到了 extranet。

还要确保您的提供商正确设置了“storeFullNames”。如果您的数据库不包含域(例如 extranet\myUser),则应将其设置为 false。

关于asp.net成员(member)sitecore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com