在sitecore中的Home项目上设置字段级安全性

时间:2012-03-13 17:01:24

标签: security sitecore field readonly

我有一个关于为sitecore中的Home项设置几个字段的安全性的问题。

我有一个模板,我们称它为TaggingTemplate,有7个字段,我们称它们为 - field1,field2,field3 ... field7。 我的sitecore结构中的所有其他模板都在使用此模板。

使用“Home”模板的Home项也会继承“TaggingTemplate”。

我想要做的是将字段 - field1到field5设置为只读,除了Home项目的管理员以外的所有人。我怎样才能做到这一点? 主项目上设置了许多安全设置,主项目的安全设置的任何更改都会影响整个网站。

我无法在Home模板中设置该安全设置,因为field1-field5是从TaggingTemplate继承的。 我也找不到通过安全编辑器做到这一点的方法。

2 个答案:

答案 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();
    }

您可以选择重构模板,将这些字段移动到用户无法编辑的其他项目。