【问题标题】: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
}
}
SecurityStateSwitcher 是SecurityDisabler 的基类(见下文),因此您在上面看到的是一种将安全检查“重置”回Enabled 模式的方法。
public class SecurityDisabler : SecurityStateSwitcher
{
public SecurityDisabler : base (SecurityState.Disabled) {}
}