【问题标题】:Sitecore permissions within Security Disabler安全禁用程序中的 Sitecore 权限
【发布时间】:2017-03-16 00:58:03
【问题描述】:

如果您正在使用安全禁用程序运行代码,是否可以在仍在使用安全禁用程序时重新启用安全性?

我的问题是我需要测试用户的权限,但如果您在 SecurityDisabler 中并使用 UserSwitcher 来测试权限。它总是说他们有权限。所以我希望重新启用安全性进行测试。

还有一点是代码在项目进入工作箱时执行,Sitecore 似乎使用 Disabler 自动运行所有代码,这很有意义,但很难测试权限。

这是在 Sitecore 6.4.1 上。

【问题讨论】:

    标签: security permissions sitecore workflow


    【解决方案1】:

    您可以在using SecurityDisabler scope 中使用SecurityStateSwitcher,例如:

    Item item = Sitecore.Context.Database.GetItem("/sitecore/system");
    
    var canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns false
    
    using (new SecurityDisabler())
    {
        canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns true
    
        using (new SecurityStateSwitcher(SecurityState.Enabled))
        {
            canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns false again
        }
    }
    

    SecurityStateSwitcherSecurityDisabler 的基类(见下文),因此您在上面看到的是一种将安全检查“重置”回Enabled 模式的方法。

    public class SecurityDisabler : SecurityStateSwitcher
    {
        public SecurityDisabler : base (SecurityState.Disabled) {}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多