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