如何限制 Sitecore 语言仅写入内容树的某些部分

2023-12-05

在我们的 Sitecore 实施中,我们有分支编辑器,他们需要英语及其母语(例如德语)的语言写入权限。但是,我们的内容树的某些部分不应由这些分支编辑器编辑英文版本,但母语版本可以。

举一个具体的例子,如果我们有一个产品页面,其中包含一些全局信息(例如零件号)和一些可本地化信息(例如描述字段),我们将使用字段级安全性来锁定全局(零件编号)字段,但需要一种方法来确保德语编辑器可以创建该项目的德语版本并放入翻译后的可本地化(描述)文本,但不能无意中切换到并更新英语版本该描述的。

我了解如何在“系统”>“语言”上为某些角色设置语言读/写。我们已经涵盖了该部分。我想知道的是,对于具有英语和德语版本写入权限的假设内容编辑者来说,是否有一种方法可以有效地完成以下类型的场景:

  • Home
    • Item 1 (编辑拥有英语和德语版本的写入权限)
    • ...子项目 1
    • ...子项目 2
    • Item 2 (编辑仅拥有德语版本的写入权限)
    • ...子项目 1
    • ...子项目 2

在此先感谢您的任何建议。


据我所知,原生的Sitecore安全模型在这方面是有缺陷的。语言读/写访问无法本地化到内容树的给定部分。也就是说,如果您可以编辑语言,则可以对您具有写入权限的所有内容项执行此操作。

但是,我认为您可以使用 saveUi 管道和 getContentEditorWarnings 管道的组合来满足您的要求。

saveUi

在此管道中,您将需要一个处理器来检查用户是否应该能够以当前语言编辑给定内容。我将把如何配置/确定它留给您(XML 配置?用户访问内容树分支中特定于语言的项目?),但如果用户应该被拒绝访问,您可以阻止节省。

public class CheckLanguageWritePermission
    {
        public string WorkflowStateID { get; set; }

        public void Process(SaveArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.Items, "args.Items");
            foreach (SaveArgs.SaveItem item in args.Items)
            {
                Item item2 = Sitecore.Client.ContentDatabase.Items[item.ID, item.Language];
                    if (/* user should not have permission*/)
                    {
                        AbortSave(args);
                        return;
                    }
            }
        }

        protected void AbortSave(SaveArgs args)
        {
            if (args.HasSheerUI)
            {
                SheerResponse.Alert("You do not have permission to edit this item in the current language.");
                SheerResponse.SetReturnValue("failed");
            }
            args.AbortPipeline();
        }
    }

获取内容编辑器警告

由于您无法阻止用户使用这种方法实际编辑内容(只是保存它),因此您可能应该提供一个警告来说明这一点。

public class CheckLanguageWritePermission
{
    // Methods
    public void Process(GetContentEditorWarningsArgs args)
    {
        Item item = args.Item;
        if (/* user should not have permission*/)
        {
            GetContentEditorWarningsArgs.ContentEditorWarning warning = args.Add();
            warning.Title = "You do not have permission to edit this item in the current language.";
            warning.IsExclusive = true;
        }
    }
}

这不是一个完美的解决方案,但它确实可以防止对内容进行不需要的编辑。如果版本控制/工作流程正在发挥作用,您也许可以通过覆盖 item:addversion 和 item:checkout 的 UI 命令来完全阻止添加新版本。

确定访问权限可能很棘手,最好的方法取决于您的具体业务规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制 Sitecore 语言仅写入内容树的某些部分 的相关文章

  • 合并 2 个 .jks 信任库文件

    我正在使用启用了 SSL 的 Tomcat 并使用信任库进行客户端身份验证 我有两个 jks trustore 文件 第一个 我将其用于 PROD 环境 另一个用于 TEST 环境客户端证书 我在 Tomcat 上部署了 Web 应用程序
  • 如何防止我的 servlet 被其他网站调用

    好的 我有一个像这样的简单的 servlet public class SimpleServlet extends HttpServlet public void doPost HttpServletRequest req HttpServ
  • 有什么方法可以安全地在浏览器中显示视频

    有什么方法可以安全地在浏览器中显示视频 就像他的安全措施之一 视频无法下载 谢谢 我想您的意思是您不希望您的视频被下载或复制 如果是这样 那么阻止人们下载视频或多或少是不可能的 甚至有很多工具可以从 YouTube 等大型提供商那里下载 因
  • 在表单中重新填充密码字段会产生安全问题吗?

    我想知道当其他字段未验证时是否应该重新填充表单中的 屏蔽的 密码字段 我在网上看到过两种形式 重新填充屏蔽密码字段 清空密码字段 因此用户需要再次输入它 即使它是有效的 你的最佳实践是什么 重新填充密码字段是否表明存在安全漏洞 就可用性而言
  • 扩展 URLClassLoader 并覆盖 getPermissions 不起作用

    当尝试在类似插件的环境中实现沙箱时 我遇到了https stackoverflow com a 5580239 2057294 https stackoverflow com a 5580239 2057294这似乎正是我想要的 但是我无法
  • 智能排序 Localized.strings 文件

    In my Localizable Strings我尝试按字母顺序排列所有对 是否可以按字母顺序重新排序我的Localizable strings 也许使用 genstring 或特殊的 bash 脚本 在这里我还有额外的要求需要完成 1
  • 将授权放在服务层而不是Web API层

    我正在使用 NET Core Web API 构建 REST API 我的控制器只是将请求转发到服务层并返回结果 HttpPost nameof Create public async Task
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • 我的 sudo 命令不起作用[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个 mac 10 8 2 mountain lion 当我尝试使用 sudo 命令时 我得到这个 sudo private etc sudoer
  • 使用 authlogic_api 进行 Rails REST API 访问

    我正在为 Steam 游戏编写 Rails 后端 API 该游戏只能通过 REST 调用访问 因此不需要特定于用户的身份验证 我正在努力实施authlogic api 插件 http github com phurni authlogic
  • 如何使用 Sitecore Glass Mapper 渲染带有 css 类的链接

    我有以下链接 a class btn btn primary href View details a 如何使用 sitecore glass 渲染链接并使其仍然保留 css 类 使用 sitecore 中的字段渲染器 您过去可以将类作为附加
  • 为什么符号链接的权限默认为所有许可?

    当我使用创建硬链接时ln ln testfile txt testfile2 txt 文件硬链接 通过 inode 表中两个别名的相同 inode 编号进行确认ls li 对硬链接文件具有与原始名称文件相同的初始权限 1222285 rw
  • 我首次设置 AWS EB 时创建的默认安全组是什么?

    我对几个组所扮演的角色感到困惑 这些组似乎已自动添加到我的 AWS 安全组列表中 并以我收集的默认配置进行连接 并且想知道它们是如何工作的 以及它们的安全性如何 改变 具体来说 有三个神秘之处 launch wizard 1其中有一条入站规
  • 是否可以执行扩展名为 file.php.jpg 的 PHP?

    网站合法文件image upload php用于上传文件89471928047 php jpg这是简单的文件上传表单 将 tmp 文件复制到同一图像文件夹 他们如何设法执行它并通过它上传其他文件 有人知道这怎么可能吗 PHP version
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • 一个 Guice 就绪的安全框架?

    有没有人见过一个为与 Guice 一起工作而编写的框架 或者一个将现有安全系统 即 Acegi 与 Guice 集成的库 到目前为止我发现了以下内容 http code google com p warp security http cod
  • 如何使用过滤器进行输出编码以防止XSS?

    我在 servlet 中使用以下代码 protected void doGet HttpServletRequest request HttpServletResponse response throws ServletException
  • C# - 在同一键盘布局中的两个不同 IME 之间自动切换

    我做了一个在数据库中输入中文拼音和汉字的应用程序 这意味着操作者必须通过ctrl shift不断地在 拼音输入法 和 搜狗输入法 之间切换 有没有办法让 IME 在选择文本框时自动更改 我的意思是 不是切换键盘布局 只是相同键盘布局的输入法
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任

随机推荐

  • PHP 会话变量与局部变量互换?

    我遇到了一个关于 php ini 中的会话变量和局部变量的非常奇怪的问题 我试图弄清楚我是否不了解 php 中的会话 或者这是否是我的主机使用的 php 版本的问题 这是一个非常简单的代码来演示这个奇怪的问题 session start v
  • C 和 C++ 中 += 的结果是什么?

    我有以下代码 include
  • 如何区分bool和int

    我有一个清单 它包含不同类型的值 例如 1 2 3 a False 0 5 0 3 任务是将所有零移动到列表的末尾 它应该看起来像这样 1 2 3 a False 5 3 0 0 如何区分布尔值False from 0 我正在尝试将它们与以
  • 1 viewmodel多条路线:生命周期

    我想要有几个不同的路线指向相同的视图 视图模型 并且我已经成功地实现了这一点 route formulation moduleId formulation title Formulation nav 6 route fabrication
  • 为什么 Typescript 允许子类型化?

    根据文档 TypeScript 中的类型兼容性基于结构子类型 所以这是可能的 type Person name string const developer name Joe language Typescript this is ok b
  • 一表两列MYSQL查询挑战

    考虑一个名为 comments 的 MYSQL 表 其中包含 2 列 主机名 和 用户名 如何返回按主机名排序的列表 其中第二列是与每个主机名关联的用户名列表 我可以看到如何使用 py 这样的脚本语言来做到这一点 但是它可以作为标准 SQL
  • 当对页面使用直写式缓存策略时

    我正在阅读 MDS 攻击论文RIDL 流氓飞行数据加载 将页面设置为回写 直写 组合写入或不可缓存 并通过不同的实验确定行填充缓冲区是微架构泄漏的原因 切线 我知道内存可能是不可缓存的 但我假设可缓存的数据始终缓存在回写式缓存中 即我假设
  • 如何在画布上制作可拖动的矩形?

    我有这三个函数来触发事件 我已经有了我的需求的静态版本 但我需要它的动态版本 bool captured false double x shape x canvas y shape y canvas UIElement source nul
  • 如何从 QMdiSubWindow 中删除 Qt 图标

    尝试从 QMdiSubWindow 中删除 Qt 图标 但收效甚微 下图显示了左上角的图标 这是一些代码 看起来应该将图标设置为空 但事实并非如此 QMdiSubWindow sub new QMdiSubWindow sub gt set
  • Javascript 全局变量的生命周期

    我是Javascript初学者 当我学习 Javascript 全局变量生命周期时 它说 全局变量的生命周期从声明时开始 并且 当页面关闭时结束 我读到Javascript会将全局变量存储到window对象中 而它什么时候会被摧毁呢 关闭网
  • 突出显示 ListView 选定的行

    我有一张专辑列表 几百张 当我触摸所选专辑时 我想为用户提供播放整个专辑或移至其曲目 ListView 的选择 没问题 但是 在触摸 albumListView 中的专辑后 我希望该行保持突出显示 以便用户知道他们单击了哪个项目 然后可以移
  • 如何避免饼图中标签和 autopct 重叠

    我的Python代码是 values 234 64 54 10 0 1 0 9 2 1 7 7 months Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec colors yellowgree
  • 使用 keras Convolutional1D Layer 时出现负维度错误

    我正在尝试使用 Keras 创建一个 char cnn 那种类型的 cnn 需要你使用Convolutional1D层 但是我尝试将它们添加到模型中的所有方法 都会在创建阶段给我带来错误 这是我的代码 def char cnn n voca
  • 有没有办法使用 jquery 或 javascript 检测用户是否按下了刷新按钮?

    我想知道 jquery 或 javascript 是否可以检测用户是否按下了浏览器的刷新按钮 如果可以的话我可以看一个例子吗 无法检测用户在页面刷新之前是否按下了刷新 但您可以使用 cookie 来确定页面在第二次加载后是否刷新 例如 每个
  • 在 Objective-C 中如何确定我的方法的“调用者”? [复制]

    这个问题在这里已经有答案了 所以我有一个相当复杂的应用程序 我可能天真地同意 调试 在进入某个方法后 我想打印出尽可能多的信息 包括谁调用了该方法 从哪个类 方法等调用了该方法 任何建议将非常感激 只需添加您的方法 NSLog Show s
  • 为什么边缘消失速度很慢?

    如中所述这个答案 边缘淡入ScrollView可能会很慢 我想知道 为什么 使用褪色边缘可能会导致明显的性能下降 并且仅应在应用程序的视觉需要时使用 设计 要请求 API 级别 14 及以上的淡入淡出边缘 请使用android requir
  • jQuery - 单击时如何将锚点滚动到页面顶部?

    我有一个链接列表divelements 我正在使用 dropcontent js 将内容加载到另一个元素中div单击链接时 我现在想添加一些代码 将单击的链接滚动到浏览器窗口的顶部 列表中每个项目的 HTML 如下所示 div class
  • 二维数组的分段错误

    有一个奇怪的分段错误错误 下面的代码运行良好 include
  • 在 ASP.NET MVC 中启用会话状态

    我想在 ASP NET MVC 应用程序中使用会话变量 我已经添加了
  • 如何限制 Sitecore 语言仅写入内容树的某些部分

    在我们的 Sitecore 实施中 我们有分支编辑器 他们需要英语及其母语 例如德语 的语言写入权限 但是 我们的内容树的某些部分不应由这些分支编辑器编辑英文版本 但母语版本可以 举一个具体的例子 如果我们有一个产品页面 其中包含一些全局信