Sitecore非管理员用户显示隐藏项

Sitecore非管理员用户显示隐藏项,sitecore,Sitecore,我创建了一些不是管理员的Sitecore用户,并为他们分配了一些角色。默认情况下,当这些用户访问Sitecore门户时,不会显示隐藏项,他们必须转到“查看”选项卡并手动配置。是否可以通过对这些用户之间共享的用户角色进行一些配置,将这些用户配置为默认情况下查看隐藏项。此信息由Sitecore.Shell.UserOptions.view.ShowHiddenItems属性检索,该属性从UserProfile(如果配置文件已加载,则可从注册表缓存中下载) 用户配置文件信息为每个用户单独存储,并以二进

我创建了一些不是管理员的Sitecore用户,并为他们分配了一些角色。默认情况下,当这些用户访问Sitecore门户时,不会显示隐藏项,他们必须转到“查看”选项卡并手动配置。是否可以通过对这些用户之间共享的用户角色进行一些配置,将这些用户配置为默认情况下查看隐藏项。

此信息由
Sitecore.Shell.UserOptions.view.ShowHiddenItems
属性检索,该属性从
UserProfile
(如果配置文件已加载,则可从注册表缓存中下载)

用户配置文件信息为每个用户单独存储,并以二进制列形式保存在数据库中。无法从用户角色获取此选项

您仍然可以编写一个脚本,该脚本将遍历您提到的角色中的所有用户,并在这些用户的配置文件中设置值:

publicstaticvoid SetHiddenItemsValue(用户)
{
string key=“/Current\u User/UserOptions.View.ShowHiddenItems”;
string value=“true”;
如果(!(用户!=null))
返回;
key=StringUtil.Left(key,250);
key=key.Replace(“当前用户”,User.Name);
user.Profile[key]=值;
user.Profile.Save();
RegistryCache RegistryCache=CacheManager.GetRegistryCache(Sitecore.Context.Site);
if(registryCache==null)
返回;
registryCache.Clear();
}

Maras的另一个选择是,您可以挂接到
security:loggedin
事件并设置该值

您的类需要继承自
Sitecore.Pipelines.LoggedIn.LoggedInProcessor
这将需要执行以下操作:

public override void Process(LoggedInArgs args)
{
    var user = Sitecore.Security.Accounts.User.FromName(args.Username, true);
    var key = "/" + args.Username + "/UserOptions.View.ShowHiddenItems";

    // if user needs to be in a specific role only, check that here
    // if (user.IsInRole("yourrolename"))
    if (String.IsNullOrEmpty(user.Profile[key]))
    {
        user.Profile[key] = "true";
        user.Profile.Save();
    }
}

同意。这也是一个选项。您的解决方案的好处是它将适用于分配给此角色的新用户。缺点是它将在所有用户的每次登录操作后执行。无论如何+1