Mat*_*ser 9 asp.net asp.net-membership sitecore
我有一个Sitecore网站,我希望将网站访客帐户存储在外部asp.net会员数据库中,但保持Sitecore内容编辑/管理员通过Sitecore界面进行管理(因此存储在'Core'数据库中).
我已阅读以下论坛帖子 http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?postid=35305
其中提到了以下文件 http://sdn.sitecore.net/upload/sitecore6/62/membership_providers_sc62-a4.pdf http://sdn.sitecore.net/upload/sitecore6/62/security_api_cookbook_sc60-62-a4. pdf http://sdn.sitecore.net/upload/sdn5/modules/ad/low-level_sitecore_cms_security_and_custom_providers-a4.pdf
但这些似乎都没有提供我需要做的全貌.
我目前已将该<membership>部分设置为使用"切换器"提供程序(指向我的会员数据库的相应提供程序),并且该<roleManager>部分还设置为再次使用切换器提供程序,并指向所述会员数据库的相应提供程序.
到目前为止,我只是成功打破了Sitecore桌面中的用户管理器(Item has already been added. Key in dictionary: 'extranet\Anonymous' Key being added: 'extranet\Anonymous'如果Sitecore创建了Extranet\Anonymous帐户,或者Object reference not set to an instance of an object.如果我删除了该用户帐户,则会抛出异常.
作为背景信息我使用Sitecore 6.5,我的网络配置的相关部分如下
<membership defaultProvider="switcher">
<providers>
<clear/>
<add name="sitecore"
type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel"
realProviderName="myProvider"
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="myProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
applicationName="sitecore"
connectionStringName="myDatabase"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="10" />
</providers>
</membership>
<roleManager defaultProvider="switcher" enabled="true">
<providers>
<clear/>
<add name="sitecore"
type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel"
realProviderName="myProvider"
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="myProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
applicationName="sitecore"
connectionStringName="myDatabase" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
Yan*_*nko 20
在自定义成员资格/角色提供程序的情况下,您应遵循的想法与AD模块在其设置说明中列出的内容类似.整个过程可以分为几个步骤:
这非常简单,看起来这就是你已经完成的事情.关键是要有一个到数据库的连接字符串,然后可以从自定义提供程序引用.
另一个简单的步骤 - 只需在web.config中的部分myProvider下添加成员资格提供程序定义(在您的情况下)system.web/membership/providers,并在system.web/roleManager/providers部分下添加角色提供程序定义.订单并不重要.此时,您不会修改上述部分中的任何其他提供程序定义.
这是变得复杂的地方.首先,请勿更改@defaultProvider属性值.这是'sitecore'在默认情况下,它应该留原样.相反,找到被调用的提供程序"sitecore",并将其@realProviderName属性值从更改'sql'为'switcher'.
名为"switcher"的提供程序负责切换提供程序并组合GetAll/Find方法的结果.
您应该通过自定义提供程序为自定义数据库中的用户/角色创建一个新域.像这样的东西:
<domain name="myDomain" ensureAnonymousUser="false"/>
Run Code Online (Sandbox Code Playgroud)
该@ensureAnonymousUser属性设置为false意味着Sitecore不会向您的域添加匿名用户,因此不会myDomain\Anonymous.这通常是自定义域的所需行为.
这是让Sitecore知道每个提供商提供哪个域的最后一步.一个提供商可以处理多个域(默认的Sitecore SQL提供商将用户存储在'sitecore'和'extranet'域中),但反之亦然.
因此,打开主web.config文件并浏览到该configuration/sitecore/switchingProviders部分.为成员子部分添加类似的内容:
<provider providerName="myProvider" storeFullNames="false" wildcard="%"
domains="myDomain" />
Run Code Online (Sandbox Code Playgroud)
和roleManager子部分类似:
<provider providerName="myProvider" storeFullNames="false" wildcard="%"
domains="myDomain" />
Run Code Online (Sandbox Code Playgroud)
在此之后,您的数据库中的用户将'myDomain\user'在UserManager中可见,对于角色也是如此.这@storeFullNames='false'意味着您的数据库存储没有域前缀的用户/角色,只有本地名称.如果您的自定义源是SQL(显然是),则通配符应该是默认值.
就是这样,现在应该可以了!:-) 本文描述了上述步骤的详细信息.
| 归档时间: |
|
| 查看次数: |
9151 次 |
| 最近记录: |