我有一个关于为sitecore中的Home项设置几个字段的安全性的问题。
我有一个模板,我们称它为TaggingTemplate,有7个字段,我们称它们为 - field1,field2,field3 ... field7。 我的sitecore结构中的所有其他模板都在使用此模板。
使用“Home”模板的Home项也会继承“TaggingTemplate”。
我想要做的是将字段 - field1到field5设置为只读,除了Home项目的管理员以外的所有人。我怎样才能做到这一点? 主项目上设置了许多安全设置,主项目的安全设置的任何更改都会影响整个网站。
我无法在Home模板中设置该安全设置,因为field1-field5是从TaggingTemplate继承的。 我也找不到通过安全编辑器做到这一点的方法。
答案 0 :(得分:4)
您无法通过安全编辑器中的模板查看继承的字段。因此,您可以使用安全编辑器限制TaggingTemplate
对该模板的所有实例的某些字段的访问权限,但仅当模板TaggingTemplate
继承Home
时才能限制访问权限
答案 1 :(得分:4)
正如Mark在他的回答中提到的那样,Sitecore安全无法做到这一点。您可以使用SaveUI管道插件来阻止它,尽管不是最方便用户的方式。
使用ILSpy等工具检查Sitecore.Pipelines.Save
中的管道处理器。使用Process(SaveArgs args)
方法创建处理器。如果Sitecore.Context.User.IsAdministrator
,您可以提前退货。否则,检查集合args.Items和每个SaveArgs.SaveItem
中的字段,以确定它是否为主项,以及是否已编辑了您的某个字段。如果是,请使用以下逻辑停止保存并提醒用户:
protected void AbortSave(SaveArgs args)
{
if (args.HasSheerUI)
{
SheerResponse.Alert("You cannot edit these fields.");
SheerResponse.SetReturnValue("failed");
}
args.AbortPipeline();
}
您可以选择重构模板,将这些字段移动到用户无法编辑的其他项目。