Sitecore.Context.User.IsAuthenticated returns extranet\Anonymous 用户为真

Sitecore.Context.User.IsAuthenticated returns true for extranet\Anonymous user

我安装了 Sitecore 6.6。我想向 Sitecore 添加一个新域;由于我的 Sitecore 实例部署在两台服务器上,每台服务器都有两个 Sitecore 站点指向不同的 Web 数据库,但指向相同的核心数据库、主数据库和分析数据库,因此我无法使用 Sitecore 域 manager.So编辑服务器中的 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\Anonymous 用户(未登录用户)返回 true。

有没有人遇到过这个问题? 请让我知道我哪里出错了。

我在使用 Sitecore 6.6 时也遇到过这个问题,我不确定它是否会在更高版本中出现。本质上,当您修改 domains.config 并将参数 ensureAnonymousUser 设置为 true 时,该域的匿名用户(在本例中为 Extranet)已在数据库中创建 - 可能直到您更改该设置后才创建。

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

因此,我建议您对 Sitecore.Context.User.IsAuthenticated 进行额外检查,以检查用户帐户的用户名是否为 *domain of site*/anonymousSitecore.Context.User.Name,如果为 return 则为假。

编辑

我已确认 Sitecore.Context.User.IsAuthenticated return 对 *domain*\Anonymous 用户而言为真已在 Sitecore 8 中得到修复。因此您可以使用它来确定用户是否已登录且未使用*domain*\anonymous 帐户。

我们终于解决了这个问题!这是由我们为解决 Sitecore ECM 问题而添加的修复程序引起的。问题是 Sitecore 曾经在我们单击消息预览后立即注销。因此,我们按照以下线程中给出的步骤来解决问题。

但我们并没有像在线程中那样对匿名用户进行测试。我们从未将此代码推送到 Content Delivery 站点,何时 我们创建了新域,此代码与其他一些代码一起被推送到内容分发站点。

由于我们在代码中将当前用户设置为活动用户,它开始显示 extranet\Anonymous 用户为当前用户。