Sitecore.Context.User.IsAuthenticated为extranet \ Anonymous用户返回true

时间:2015-08-17 12:01:15

标签: sitecore sitecore6

我安装了Sitecore 6.6。我想为Sitecore添加一个新域名;由于我的Sitecore实例部署在两个服务器中,每个服务器有两个Sitecore站点,每个站点指向不同的Web数据库,但是相同的核心,主数据库和分析数据库,我无法使用Sitecore域管理器来执行此操作。所以我想通过编辑它来手动完成服务器中的App_Config \ Security \ domains.config。以下是我拥有的domains.config。

<?xml version="1.0" encoding="utf-8"?>
<domains xmlns:sc="Sitecore">
<domain name="sitecore" ensureAnonymousUser="false" />
<domain name="extranet" defaultProfileItemId="{AE4C4969-5B7E-4B4E-9042-B2D8701CE214}" />
<domain name="default" isDefault="true" />
<sc:templates>
    <domain type="Sitecore.Security.Domains.Domain, Sitecore.Kernel">
        <ensureAnonymousUser>true</ensureAnonymousUser>
        <locallyManaged>false</locallyManaged>
    </domain>
</sc:templates>
<domain name="Station" defaultProfileItemId="{F181ED3D-F342-46E6-B6F6-2A6A6173B513}" />
<domain name="Emailcampaign" />
</domains>

我在最后添加了一个域名(MyDomain),如下所示。

<?xml version="1.0" encoding="utf-8"?>
<domains xmlns:sc="Sitecore">
<domain name="sitecore" ensureAnonymousUser="false" />
<domain name="extranet" defaultProfileItemId="{AE4C4969-5B7E-4B4E-9042-B2D8701CE214}" />
<domain name="default" isDefault="true" />
<sc:templates>
    <domain type="Sitecore.Security.Domains.Domain, Sitecore.Kernel">
        <ensureAnonymousUser>true</ensureAnonymousUser>
        <locallyManaged>false</locallyManaged>
    </domain>
</sc:templates>
<domain name="Station" defaultProfileItemId="{F181ED3D-F342-46E6-B6F6-2A6A6173B513}" />
<domain name="Emailcampaign" />
<domain name="MyDomain" />
</domains>

一旦我这样做,Sitecore.Context.User.IsAuthenticated就开始在代码中为extranet \匿名用户(未登录用户)返回true。

以前有人遇到过这个问题吗? 请告诉我哪里出错了。

2 个答案:

答案 0 :(得分:2)

当我使用Sitecore 6.6时,我也回过头来解决了这个问题,我不确定它是否会在以后的版本中出现问题。基本上,当您在将参数domains.config设置为true的情况下修改ensureAnonymousUser时,该域中的匿名用户(在本例中为Extranet)是在数据库中创建的 - 它可能直到您更改了该设置。

在Sitecore中,所有未登录的用户都以用户*domain*/anonymous的身份查看该网站。由于Sitecore的成员身份基于.NET成员身份,因此它确定用户使用该帐户登录。

因此,我建议您使用Sitecore.Context.User.IsAuthenticated完成额外检查,以检查用户帐户的用户名是*domain of site*/anonymousSitecore.Context.User.Name,如果返回false,则会显示错误。

修改

我已确认Sitecore.Context.User.IsAuthenticated返回true *domain*\Anonymous用户已在Sitecore 8中修复。因此,您可以使用它来确定用户是否已登录而未使用*domain*\anonymous帐户

答案 1 :(得分:0)

我们终于解决了这个问题!这是因为我们为解决Sitecore ECM遇到的问题而添加的修复程序。问题是Sitecore在我们点击消息预览时就会注销。因此,我们按照以下线程中给出的步骤来解决问题。

https://stackoverflow.com/a/30836600/4165670

但是我们没有像在线程中那样测试匿名用户。我们从未将此代码推送到Content Delivery网站以及何时 我们创建了新域名,此代码已通过其他一些代码推送到Content Delivery站点。

由于我们在代码中将当前用户设置为活动用户,因此它开始将外部网\匿名用户显示为当前用户。