Asp.net mvc 5 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 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 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(...)