Sitecore管理员帐户权限相关问题

时间:2013-07-31 05:41:28

标签: sitecore

在Sitecore管理门户中,我创建了一个具有以下角色的用户

enter image description here

当我打开Sitecore项目并尝试使用内容编辑器进行编辑时,它首先要求我在进行任何编辑之前锁定该项目。 当我选择“锁定并编辑”选项时,它会显示

If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.

当我尝试使用Sitecore管理员帐户执行相同操作时,它不会要求我锁定它并且编辑工作正常。此用户的Sitecore角色是否存在问题?

除此之外还有其他事情,当我选择“锁定和编辑”选项时,它将创建一个新版本而不是编辑相同版本。对于未发生的管理员用户。所以我认为创建一个新版本是这个的主要原因。

2 个答案:

答案 0 :(得分:2)

不,这是预期的行为。只有真正的管理员(在屏幕截图的“常规”选项卡中选中“用户是管理员”)才能绕过这些安全机制。

答案 1 :(得分:2)

使用Reflector我检查了scEditorWarningTitle(scEditorWarningTitle是警告消息标题的类)的使用情况。我发现它位于Sitecore.Client.dll中,特别是在Sitecore.Shell.Applications.ContentMnaager.Editor.RenderWarning中。该命名空间还有一个GetWarnings方法,该方法可以阻止getContentEditorWarnings管道:

using (new LongRunningOperationWatcher(Settings.Profiling.RenderFieldThreshold, "GetContentEditorWarningsArgs pipeline", new string[0]))
{
    CorePipeline.Run("getContentEditorWarnings", args);
}

查看该管道,我们可以看到它执行以下操作(默认情况下,至少在Sitecore 6.5更新5中 - 在其他版本的Sitecore中可能会有所不同):

<getContentEditorWarnings>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.ItemNotFound, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanReadLanguage, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.HasNoVersions, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWrite, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWriteWorkflow, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWriteLanguage, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.IsReadOnly, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.IsLocked, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.HasNoFields, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.NeverPublish, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.ItemPublishingRestricted, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.VersionPublishingRestricted, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.ShowingInputBoxes, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.FeedIsEmpty, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.RunRules, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.GetContentEditorWarnings.Notifications, Sitecore.Kernel"/>
</getContentEditorWarnings>

再次在Sitecore 6.5更新5中,我看到的唯一VersionPublishingRestricted警告是:

  

如果您现在发布,则所选版本将不会显示在   网站因为它不在最后的工作流程步骤中   如果您立即发布,则所选版本将不会显示在   网站,因为今天不属于其有效日期范围
如果   您现在发布,所选版本将不会在Web上显示   网站,因为它已被更新的版本替换
如果您发布   现在,所选版本将不会在网站上显示

有可能描述

  

将发布版本X

  

不会发布其他版本

我检查过的所有其他处理器都没有提到被旧版本替换。
如果旧的不是拼写错误,那么值得查看getContentEditorWarnings管道或检查您的规则(位于/sitecore/system/Settings/Rules/Content Editor Warnings/Rules

修改
正如@horseman所说,在Sitecore 6.6中,这是VersionPublishingRestrictions

 if ((validVersion != null) && (item.Version.Number < validVersion.Version.Number))
 {
     warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it has been replaced by a newer version.");
 }
 else if ((validVersion != null) && (item.Version.Number > validVersion.Version.Number))
 {
     warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.");
 }
 else if (IsInWorkflow(item))
 {
     warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it is not in the final workflow step.");
 }
 else if ((item.Publishing.ValidFrom > now) || (item.Publishing.ValidTo <= now))
 {
     warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because today does not fall within its valid date range.");
 }
 else
 {
     warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site.");
 }

因此,如果有一个有效版本,并且有效版本号小于当前所选项目的版本号,您将收到消息:

If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.