Asp.net mvc 5 Sitecore 8中外部用户的成员资格
我想为Sitecore 8网站建立一个用户注册存储。用户将进入一个外部数据库Asp.net mvc 5 Sitecore 8中外部用户的成员资格,asp.net-mvc-5,sitecore,asp.net-membership,sitecore8,Asp.net Mvc 5,Sitecore,Asp.net Membership,Sitecore8,我想为Sitecore 8网站建立一个用户注册存储。用户将进入一个外部数据库 Sitecore.NET 8.0(版本150223) .NET Framework 4.0.30319.18052 剃须刀版本=3.0.0.0 MVC 5.2.3.0 net MVC附带内置的成员资格(AccountController、视图等)。我想把它移植到我的Sitecore项目中。问题是Sitecore也在内部使用成员资格。我知道有一种方法可以让Sitecore 6.x版本的成员资格通过在中介绍的交换提供程
- Sitecore.NET 8.0(版本150223)
- .NET Framework 4.0.30319.18052
- 剃须刀版本=3.0.0.0
- MVC 5.2.3.0
Sitecore 8的流程是否仍然相同?这仍然适用于Sitecore 8,核心asp.net成员资格功能和交换成员资格提供程序仍然可以使用。Sitecore 8的mongo db端用于xDb,但您仍然使用成员系统进行身份验证 我不会提供任何进一步的细节,因为你引用的帖子似乎涵盖了所有内容。以防这里有另一个好帖子:
请确保在domains.config中为您的成员资格系统声明一个新域。我个人喜欢保持成员资格逻辑非常简单,并且远离自定义提供者。Sitecore有一个虚拟用户的概念,一旦在外部数据库上进行身份验证,就可以对其进行实例化。您可以在此虚拟用户上设置任何自定义属性,并让sitecore将其记录在xDB中。
这是一个很好的例子。我最终没有使用
SimpleMembership
,而是选择了会员身份。我无法使编码
链接提到的适配器工作
此方法没有正确记录。我只需要更改配置文件。我确实没有必须创建一个从MembershipProvider
继承的自定义类
Web.config:
在成员资格
部分
- 将
realProviderName
更改为“切换器”
- 复制
“sql”
节点,并将名称和连接字符串名称更改为“外部”
在切换提供程序
部分
- 添加带有域的
“外部”节点“外部”
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>
Domains.config:
- 添加域
“外部”
配置:
<add name="external" connectionString="..." providerName="System.Data.SqlClient"/>
<domain name="external" ensureAnonymousUser="false" />
而不是保存到core
db
// uses default provider
Membership.CreateUser(...)
我想重用MVC项目模板提供的AccountController逻辑。我跟着帖子走了,我得到了下面的例外。我可以将SimpleMembershipProvider与Sitecore 8一起使用吗?异常:若要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例代码>看起来应该是ExtendedMembershipProvider。这可能会有所帮助——正如xoail所建议的,还有其他更简单的身份验证方法,在与会员提供商合作之前,我会根据您的要求检查每个选项。
// uses default provider
Membership.CreateUser(...)