2012-03-13 55 views
2

我有一個關於爲sitecore中的Home項目的幾個字段設置安全性的問題。在sitecore的Home項目上設置字段級安全

我有一個模板,我們稱之爲帶7個字段的TaggingTemplate,讓我們稱它們爲 - field1,field2,field3 ... field7。 該模板正在我的sitecore結構中的所有其他模板中使用。

使用「Home」模板的Home項目也繼承了「TaggingTemplate」。

我想要做的是設置字段 - 字段1到字段5爲除了管理員的首頁項以外的每個只讀。我怎樣才能做到這一點? 家庭項目上設置了一堆安全設置,並且家庭項目安全設置的任何更改都會影響整個網站。

我無法在主頁模板中設置該安全設置,因爲field1-field5是從TaggingTemplate繼承的。 我無法通過安全編輯器找到一種方法。

+1

謝謝大家的意見。他們真的很有幫助。我決定複製模板,然後在Home項目上繼承它,而不是編寫代碼和所有內容。 – aspnetdeveloper 2012-03-14 16:20:59

回答

4

您無法通過安全編輯器中的模板查看繼承字段。因此,您可以使用安全編輯器來限制對該模板的所有實例的訪問TaggingTemplate上的某些字段,但只有TaggingTemplate被模板Home繼承時才能限制訪問。

4

正如Mark在他的回答中提到的那樣,Sitecore安全性無法做到這一點。您可以使用SaveUI管道插件來阻止它,儘管這不是用戶界面最友好的方式。

使用諸如ILSpy之類的工具來檢查Sitecore.Pipelines.Save中的流水線處理器。使用Process(SaveArgs args)方法創建處理器。如果Sitecore.Context.User.IsAdministrator,你可以儘早回報。否則,請檢查每個SaveArgs.SaveItem中的集合args.Items和字段,以確定它是否是家庭項目,以及是否已編輯其中一個字段。如果是這樣,使用下面的邏輯來停止保存並提醒用戶:

protected void AbortSave(SaveArgs args) 
    { 
     if (args.HasSheerUI) 
     { 
      SheerResponse.Alert("You cannot edit these fields."); 
      SheerResponse.SetReturnValue("failed"); 
     } 
     args.AbortPipeline(); 
    } 

你的選擇是重構你的模板,這些字段移動到該用戶無法編輯另一個項目。