【问题标题】:Sitecore.Context.User.IsAuthenticated returns true for extranet\Anonymous userSitecore.Context.User.IsAuthenticated 为 Extranet\Anonymous 用户返回 true
【发布时间】:2015-08-17 12:01:14
【问题描述】:

我安装了 Sitecore 6.6。我想向 Sitecore 添加一个新域;由于我的 Sitecore 实例部署在两台服务器中,其中两个 Sitecore 站点分别指向不同的 Web 数据库但相同的核心、主数据库和分析数据库,因此我无法使用 Sitecore 域管理器来执行此操作。所以我想通过编辑手动执行此操作服务器中的 App_Config\Security\domains.config。以下是我拥有的 domain.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 user(Non-logged in user) 返回 true。

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

【问题讨论】:

  • 您是否为第二次配置粘贴了正确的代码?我看不出有什么不同。
  • @Anton 对不起。有人编辑了帖子并对其进行了一些更改。现在就来看看吧。

标签: sitecore sitecore6


【解决方案1】:

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

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

因此我建议与您的Sitecore.Context.User.IsAuthenticated 一起完成额外检查,以检查用户帐户的用户名是否为*domain of site*/anonymousSitecore.Context.User.Name,如果返回false。

编辑

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

【讨论】:

  • 在我的情况下,extranet\Anonymous 用户在我对 domain.config 进行更改之前已经存在,对于非登录用户,我将用户名作为 extranet\Anonymous 和 Sitecore.Context.User.IsAuthenticated 作为 false .但是,一旦我添加了域,对于未登录的用户,我就开始将用户名设置为 extranet\Anonymous 并将 Sitecore.Context.User.IsAuthenticated 设置为 true。有趣的是,如果我通过删除保存文件的域来删除新域,它仍然会出现同样的问题,但只是在我用旧文件替换了 domain.config 文件之后。它开始工作了。
  • 好奇 - 检查用户名和 IsAuthenticated 时您在哪个域中?如果您在新的 MyDomain 域中,您应该将未登录用户视为 MyDomain\anonymous 而不是 extranet\anonymous
  • 我将在外网\匿名域
  • 好的,正如我在回答中所说的会员身份识别默认\匿名作为登录是预期的行为,是我工作过的所有 Sitecore 6.6 的情况,并希望我对所有人都是这样后续版本。因此,通过添加我在回答中描述的 *domain*\匿名用户名的检查来解决问题
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2017-07-29
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多