我想知道有没有办法启用对某些特定SiteCore内容项的匿名访问?通过Sitecore管理员为该项目的extranet \ anonymous分配读取权限 - 没有帮助......
[UPDATE] 在访问查看器中,我确保extranet \ anonymous具有对所需项目的读取权限。 在网站定义中,我为我的网站使用Extranet域:
<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"/>
答案 0 :(得分:3)
我可以想到两个原因&#34;为外联网分配读取权限\ anonymous没有帮助&#34;:
问题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支持人员交谈,以诊断为什么用户权限未在您的站点中正确应用。他们将能够查看您的配置,代码和日志文件,以尝试解决潜在问题。
答案 1 :(得分:1)
这取决于您的网站定义在未经身份验证时访问项目时将使用哪些用户。您确定正在使用 extranet \ anonymous 吗?因为有可能正在使用的以下用户(最可能是最不可能的):
编辑07/05/2014
我还注意到使用了默认\ anonymous 。它没有在文档中描述为上述用户。让我知道正在使用哪个用户。
答案 2 :(得分:0)
解决:强> 从内容树中的“sitecore”元素中删除extranet / anonymous deny read权限。
为防止匿名访问整个网站,您只需使用“sitecore / content”元素。
允许匿名访问任何子项 - 从站点域为匿名用户分配读取权限。就我而言,它是外联网/匿名。
我不知道它是错误还是功能。无论如何,我很高兴我找到了解决方案。