Sitecore 8 中外部用户的成员资格
Membership for external users in Sitecore 8
我想为 Sitecore 8 网站建立一个用户注册商店。用户将进入外部数据库。
- Sitecore.NET 8.0(修订版 150223)
- .NET 框架 4.0.30319.18052
- Razor 版本=3.0.0.0
- MVC 5.2.3.0
Asp.net MVC 带有内置的成员资格(AccountController、视图等)。我想将其移植到我的 Sitecore 项目中。问题是 Sitecore 也在内部使用会员资格。我知道有一种方法可以通过 Sitecore authenticate users against external membership database.
中描述的切换提供商让会员为 Sitecore 6.x 版本工作
Sitecore 8 的流程还是一样吗?
这仍然适用于 Sitecore 8 和核心 asp.net 会员功能,并且仍然可以使用切换会员提供程序。 Sitecore 8 的 mongo 数据库端用于 xDb,但您仍然使用会员系统进行身份验证。
我不会提供任何进一步的细节,因为您引用的 post 似乎涵盖了所有内容。以防万一这里有另一个好 post:
https://himadritechblog.wordpress.com/2014/11/24/sitecore-custom-membership-provider/
确保在 domains.config 中为您的会员系统声明一个新域。
我个人喜欢让会员逻辑非常简单并且远离自定义提供程序。 Sitecore 有一个虚拟用户的概念,您可以在对外部数据库进行身份验证后将其实例化。您可以在此虚拟用户上设置任何自定义属性,并让 sitecore 将其记录在 xDB 中。
这里有一个很好的example.
我最终没有使用 SimpleMembership
而只是使用 Membership
。我无法让 thecodeking
link 提到的适配器工作。
此方法没有正确记录。我只需要更改配置文件。我确实 而不是 必须创建一个继承自 MembershipProvider
.
的自定义 class
Web.config:
在membership
部分,
- 将
realProviderName
更改为"switcher"
- 复制
"sql"
节点并将名称和 connectionStringName 更改为 "external"
在switchingProviders
部分,
- 添加
"external"
具有域 "external"
的节点
web.config:
<membership defaultProvider="sitecore" hashAlgorithmType="SHA1">
<providers>
<clear />
<!-- change realProviderName to "switcher" -->
<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"
/>
<!-- copy "sql" node and change name and connectionStringName to "external" -->
<add name="external"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="external"
applicationName="sitecore"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="256"
/>
</providers>
</membership>
<switchingProviders>
<membership>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
<!-- add "external" node with domains "external" -->
<provider providerName="external" storeFullNames="true" wildcard="%" domains="external" />
</membership>
</switchingProviders>
ConnectionStrings.config:
- 添加连接
"external"
配置:
<add name="external" connectionString="..." providerName="System.Data.SqlClient"/>
Domains.config:
- 添加域
"external"
配置:
<domain name="external" ensureAnonymousUser="false" />
然后直接使用 "external"
提供程序将用户保存到 external
数据库。这是关键点。
// uses "external" provider directly
Membership.Providers["external"].CreateUser(...)
而不是保存到 core
数据库的这个。
// uses default provider
Membership.CreateUser(...)
我想为 Sitecore 8 网站建立一个用户注册商店。用户将进入外部数据库。
- Sitecore.NET 8.0(修订版 150223)
- .NET 框架 4.0.30319.18052
- Razor 版本=3.0.0.0
- MVC 5.2.3.0
Asp.net MVC 带有内置的成员资格(AccountController、视图等)。我想将其移植到我的 Sitecore 项目中。问题是 Sitecore 也在内部使用会员资格。我知道有一种方法可以通过 Sitecore authenticate users against external membership database.
中描述的切换提供商让会员为 Sitecore 6.x 版本工作Sitecore 8 的流程还是一样吗?
这仍然适用于 Sitecore 8 和核心 asp.net 会员功能,并且仍然可以使用切换会员提供程序。 Sitecore 8 的 mongo 数据库端用于 xDb,但您仍然使用会员系统进行身份验证。
我不会提供任何进一步的细节,因为您引用的 post 似乎涵盖了所有内容。以防万一这里有另一个好 post:
https://himadritechblog.wordpress.com/2014/11/24/sitecore-custom-membership-provider/
确保在 domains.config 中为您的会员系统声明一个新域。
我个人喜欢让会员逻辑非常简单并且远离自定义提供程序。 Sitecore 有一个虚拟用户的概念,您可以在对外部数据库进行身份验证后将其实例化。您可以在此虚拟用户上设置任何自定义属性,并让 sitecore 将其记录在 xDB 中。 这里有一个很好的example.
我最终没有使用 SimpleMembership
而只是使用 Membership
。我无法让 thecodeking
link 提到的适配器工作。
此方法没有正确记录。我只需要更改配置文件。我确实 而不是 必须创建一个继承自 MembershipProvider
.
Web.config:
在membership
部分,
- 将
realProviderName
更改为"switcher"
- 复制
"sql"
节点并将名称和 connectionStringName 更改为"external"
在switchingProviders
部分,
- 添加
"external"
具有域"external"
的节点
web.config:
<membership defaultProvider="sitecore" hashAlgorithmType="SHA1">
<providers>
<clear />
<!-- change realProviderName to "switcher" -->
<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"
/>
<!-- copy "sql" node and change name and connectionStringName to "external" -->
<add name="external"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="external"
applicationName="sitecore"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="256"
/>
</providers>
</membership>
<switchingProviders>
<membership>
<provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
<!-- add "external" node with domains "external" -->
<provider providerName="external" storeFullNames="true" wildcard="%" domains="external" />
</membership>
</switchingProviders>
ConnectionStrings.config:
- 添加连接
"external"
配置:
<add name="external" connectionString="..." providerName="System.Data.SqlClient"/>
Domains.config:
- 添加域
"external"
配置:
<domain name="external" ensureAnonymousUser="false" />
然后直接使用 "external"
提供程序将用户保存到 external
数据库。这是关键点。
// uses "external" provider directly
Membership.Providers["external"].CreateUser(...)
而不是保存到 core
数据库的这个。
// uses default provider
Membership.CreateUser(...)