【问题标题】:Sitecore preview feature switches active domain to extranetSitecore 预览功能将活动域切换到外联网
【发布时间】:2013-05-22 10:47:12
【问题描述】:

在我们基于 sitecore 的网站中,我们有自定义的 sitecore 模块供 sitecore 管理员使用。在每个模块中,我们都会进行凭据检查,以查看当前用户是否是 sitecore 用户。

using Sitecore.Security.Authentication;

if (AuthenticationManager.GetActiveUser().Domain.Name != "sitecore")
{
   //not permitted to use the admin module
}

此检查允许管理员只要登录到 sitecore 门户就可以使用自定义模块。但问题是,每当他们使用 sitecore 的“预览”功能预览某些项目时,当前活动的用户都会更改为“extranet\Anonymous”。从此时起,我们的自定义模块认为用户不是站点核心管理员,并拒绝访问该模块。

如何克服这个问题?我们需要对我们的管理模块以及预览功能进行这种安全检查。

提前致谢!

PS。进一步调查时在已知问题上看到了这一点。 http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Users%20in%20Preview%20mode%20do%20not%20have%20access%20to%20restricted%20pages%20unless%20they%20log%20in%20on%20the%20website.aspx

【问题讨论】:

  • 您使用哪个版本的 Sitecore?您在页面生命周期的哪个时间点检查用户的域?我已经在我的项目中检查了它,在预览期间我得到了 admin 用户的"sitecore" 域。 Sitecore.Context.User.GetDomainName() 是否也为您返回外联网?确定预览代码中没有使用SecurityDisabler
  • 感谢您试用 Maras。我们使用的是 Sitecore 6.6.0(修订版 120918)。我在 Page_Load 中检查域。 Sitecore.Context.User.GetDomainName() 也给出相同的结果。不,我们不在公共网站上使用 SecurityDisabler。 (我们偶尔会在自定义代理中使用它)

标签: sitecore preview


【解决方案1】:

预览应用程序在外网\匿名用户的上下文中浏览网站,以通过隐藏安全内容等向网站访问者显示网站的外观/行为。要执行您在模块中进行的检查,您可以使用 @987654321 @ 结合 Sitecore.Context.PageMode 得到你正在寻找的逻辑。

【讨论】:

  • 感谢您的回答。 Sitecore.Publishing.PreviewManager.GetShellUser() 仅在使用预览功能后才会填充(否则它将为空,即使 sitecore 用户已登录)。因此,在我的模块中,要检查是否有sirecore 用户已登录,我首先检查GetDomainName(),如果失败,我还要检查PreviewManager.GetShellUser()。这样我就可以涵盖使用预览功能之前和之后的场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多