Umbraco-防止用户编辑页面名称

Umbraco-防止用户编辑页面名称,umbraco,umbraco7,Umbraco,Umbraco7,有没有人建议过防止用户编辑页面名称的策略 我正在Umbraco上开发一个网站,各个合作伙伴都有自己的特定页面,他们可以专门编辑。通过标准的Umbraco权限控制对此页面的访问。然而,我们发现其中一些用户一直在编辑页面标题,但我们想限制他们只能编辑内容 我看不到任何明显的方法可以通过内置权限来控制这一点 也许可以插入一些页面预保存代码,检查用户是否具有某些权限,如果没有权限,页面名称是否设置为预编辑状态 非常感谢您提供任何建议/建议。是的,您可以连接到UmbracoContentService事件

有没有人建议过防止用户编辑页面名称的策略

我正在Umbraco上开发一个网站,各个合作伙伴都有自己的特定页面,他们可以专门编辑。通过标准的Umbraco权限控制对此页面的访问。然而,我们发现其中一些用户一直在编辑页面标题,但我们想限制他们只能编辑内容

我看不到任何明显的方法可以通过内置权限来控制这一点

也许可以插入一些页面预保存代码,检查用户是否具有某些权限,如果没有权限,页面名称是否设置为预编辑状态


非常感谢您提供任何建议/建议。

是的,您可以连接到UmbracoContentService事件,并检查名称是否已更改,以及是否使用此特定节点执行某些操作。您还可以添加一些附加检查,以确定是否允许用户更改名称(例如,您可以通过角色或任何其他您需要的方式来控制该名称)

示例代码如下所示:

public class UmbracoEvents : ApplicationEventHandler
{
    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        ContentService.Saving += ContentService_Saving;
    }

    private void ContentService_Saving(IContentService sender, Umbraco.Core.Events.SaveEventArgs<Umbraco.Core.Models.IContent> e)
    {
        foreach (var changedItem in e.SavedEntities)
        {
            var currentVersion = sender.GetById(changedItem.Id);
            if (!currentVersion.Name.InvariantEquals(changedItem.Name))
            {
                // Additional checks here (or in the above condition) - role / property / etc...
                item.Name = currentVersion.Name;
            }
        }
    }
}
公共类UmbracoEvents:ApplicationEventHandler
{
受保护的覆盖无效应用程序已启动(UmbracoApplicationBase umbracoApplication、ApplicationContext ApplicationContext)
{
ContentService.Saving+=ContentService\u Saving;
}
私有无效内容服务\u保存(IContentService发送方,Umbraco.Core.Events.SaveEventArgs e)
{
foreach(e.SavedEntities中的变量changedItem)
{
var currentVersion=sender.GetById(changedItem.Id);
如果(!currentVersion.Name.InvariantEquals(changedItem.Name))
{
//此处(或在上述条件下)的其他检查-角色/属性/等。。。
item.Name=currentVersion.Name;
}
}
}
}
您也可以在此处阅读有关特定事件的更多信息: