0

我想知道是否有任何方法可以匿名访问某些特定的 SiteCore 内容项?通过 Sitecore 管理员将读取权限分配给项目的 Extranet\anonymous - 无济于事...

[更新] 在访问查看器中,我确保 Extranet\anonymous 具有对所需项目的读取权限。在站点定义中,我为我的站点使用外联网域:

<site name="website" hostName="mytest" patch:before="site[@name='scheduler']" virtualFolder="/" physicalFolder="/" enableAnalytics="true" rootPath="/sitecore/content/My Test" startItem="/Home" database="master" filterItems="true" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" enableWorkflow="true" disableClientData="false" loginPage="/login/Login.aspx"/>
4

3 回答 3

3

我可以想到“将读取权限分配给外联网\匿名没有帮助”的两个原因:

问题 A:您网站的要求或架构意味着权限无助于解决此问题。

例如,您希望某个项目大部分时间都受到保护,但需要允许匿名用户在正确验证之前阅读该项目的摘要。

在这里,您可以使用代码覆盖用于加载项目的用户上下文。最简单但最危险的方法是:

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    var item = Sitecore.Context.Database.GetItem("/path/to/item");
    // further processing
}

这只会在 using 语句中关闭 Sitecore 的安全实施。因此危险。不要在该块内放置任何真正对安全敏感的东西。

或者,您可以在代码块的持续时间内将安全上下文更改为不同的用户

var user = Sitecore.Security.Accounts.User.FromName("domain\username", false); 
using (new Sitecore.Security.Accounts.UserSwitcher(scUser))
{
    var item = Sitecore.Context.Database.GetItem("/path/to/item");
    // further processing
}

这是首选方法 - 因为您仍在使用安全性 - 只是暂时用于比上下文用户具有更多权限的帐户。

问题 B:权限应该是您解决方案的正确答案,但在这种情况下不起作用。

如果是这种情况,如果没有更多关于您的 Sitecore 安装和您的站点正在尝试做什么的详细信息,几乎不可能解决您的问题。如果这适用于您,那么您最好与 Sitecore 支持人员联系,以诊断您的站点中未正确应用用户权限的原因。他们将能够查看您的配置、代码和日志文件,以尝试解决根本问题。

于 2014-05-05T19:33:54.903 回答
1

It depends on your site definition what user will be used when accessing the item while unauthenticated. Are you sure that extranet\anonymous is being used? Because there are following users that are possibly being used (from most likely to least likely):

  • built-in\anonymous (a virtual user which is assigned to any unauthenticated visitor viewing a Web site that does not have an explicitly assigned domain)
  • extranet\anonymous (a user which is assigned to any unauthenticated visitor viewing the default Web site)
  • sitecore\anonymous (a user which is assigned to a visitor when accessing the Sitecore login page)

EDIT 07/05/2014

I have also noticed that default\anonymous is used. It's not described in the documentation as the above users. Let me know which user was being used.

于 2014-05-06T09:58:50.233 回答
0

解决方案: 从内容树中的“sitecore”元素中删除外联网/匿名拒绝读取权限。

为了防止匿名访问整个站点,您可以使用“sitecore/content”元素。

要允许匿名访问任何子项目 - 将读取权限分配给站点域中的匿名用户。就我而言,它是外联网/匿名的。

我想知道它是错误还是功能。无论如何,我很高兴我找到了解决方案。

于 2014-05-07T10:40:05.540 回答