Sitecore 非管理员用户显示隐藏项目
Posted
技术标签:
【中文标题】Sitecore 非管理员用户显示隐藏项目【英文标题】:Sitecore non administrator user show hidden items 【发布时间】:2013-08-30 08:44:04 【问题描述】:我创建了一些非管理员的 Sitecore 用户,并为他们分配了一些角色。当这些用户默认访问 Sitecore 门户时,他们不会显示隐藏项目,他们必须转到查看选项卡并手动配置它。有没有一种方法可以通过对这些用户之间共享的用户角色进行一些配置来配置这些用户默认查看隐藏项目。
【问题讨论】:
【参考方案1】:此信息由Sitecore.Shell.UserOptions.View.ShowHiddenItems
属性检索,该属性从UserProfile
(如果配置文件已加载,则从RegistryCache
)获取此数据。
用户个人资料信息为每个用户单独存储,并以二进制列保存在数据库中。无法从用户角色中获取此选项。
您仍然可以编写一个脚本,循环遍历您提到的角色中的所有用户,并在这些用户的配置文件中设置值:
public static void SetHiddenItemsValue(User user)
string key = "/Current_User/UserOptions.View.ShowHiddenItems";
string value = "true";
if (!(user != null))
return;
key = StringUtil.Left(key, 250);
key = key.Replace("Current_User", user.Name);
user.Profile[key] = value;
user.Profile.Save();
RegistryCache registryCache = CacheManager.GetRegistryCache(Sitecore.Context.Site);
if (registryCache == null)
return;
registryCache.Clear();
【讨论】:
【参考方案2】: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以上是关于Sitecore 非管理员用户显示隐藏项目的主要内容,如果未能解决你的问题,请参考以下文章
非管理员用户无法在站点核心内容树的“语言”下拉列表中看到所有语言