【问题标题】:Sitecore Items - Programmatically test if anonymous user has permissionSitecore Items - 以编程方式测试匿名用户是否有权限
【发布时间】:2017-03-07 07:30:48
【问题描述】:

我正在尝试测试项目是否可以被匿名用户查看:

var anon = User.FromName("domain\\Anonymous");

if (item.Security.CanRead(anonymousUser))
    return true;

但它总是返回 true,即使我知道对于特定项目,它们必须具有特定角色才能查看它,正如我从访问查看器中看到的那样:

【问题讨论】:

  • 项目应该在哪里可见?该项目是要在浏览器中查看的页面吗?还是内容树中的一个项目? sitecore 8 的哪个版本?
  • 这是一个待查看的页面。这是Sitecore 81 rev 160302
  • 只是为了添加上下文,此代码位于索引的计算字段中。我只需要获得用户有权获得的结果。我知道 Sitecore 有一个 SearchSecurityOptions.EnableSecurityCheck 机制,但老实说这有点儿笑话,因为它不尊重 TotalSearchResults 属性并中断分页。

标签: c# sitecore sitecore8 user-permissions


【解决方案1】:

负责爬虫(实际执行 ComputeFieldValue 代码)的设计方式是将此代码包装在 SecurityDisabler 中。这就是为什么在计算域内无法验证是否可以访问该域的原因。

Sitecore 确实建议在搜索期间进行安全检查 (ootb),但如果你这样做的话,TotalResults 确实不匹配 - 这很糟糕 ;)

如果您想在索引中获得安全性 - 首先尝试找到一种解决方案来保持项目安全性更新。例如。如果您要在某处中断继承,您的索引如何知道要更新哪些项目? ...

【讨论】:

  • 谢谢 - 这是有道理的。我想我已经找到了一种方法,通过索引项目的访问规则来获得我需要的东西。
  • 嘿@DavidMasters,我知道你已经有一段时间没有遇到这个问题了,但我想知道你是否可以发布一些关于如何为项目的访问规则编制索引的提示
猜你喜欢
  • 2015-04-27
  • 2012-11-02
  • 1970-01-01
  • 2013-06-18
  • 2022-01-01
  • 2019-03-08
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多