Sitecore 6 是不是可以在已登录时更改虚拟用户的角色?
Posted
技术标签:
【中文标题】Sitecore 6 是不是可以在已登录时更改虚拟用户的角色?【英文标题】:Sitecore 6 Is it possible to change roles for virtual user when already logged in?Sitecore 6 是否可以在已登录时更改虚拟用户的角色? 【发布时间】:2013-04-10 13:43:15 【问题描述】:在 Sitecore 6 中是否可以在已登录的情况下更改虚拟用户的角色?
我想更改已登录系统的虚拟用户的角色,但看起来 Sitecore 忽略了它。我可以清除角色并添加一个新角色,但所有旧角色仍然附加到用户。 我想我应该重新登录用户,但对我来说不是这样。
virtualUser.RuntimeSettings.AddedRoles.Clear();
virtualUser.Roles.RemoveAll();
if (permissions != null && permissions.Any())
foreach (var role in permissions.Where(d=>!string.IsNullOrEmpty(d.Type)))
string domainRole = string.Format("0\\1", "extranet", role.Type);
if (SC.Security.Accounts.Role.Exists(domainRole))
virtualUser.RuntimeSettings.AddedRoles.Add(domainRole);
【问题讨论】:
【参考方案1】:你可以尝试使用
Sitecore.Caching.CacheManager.ClearSecurityCache(userName);
这个方法调用另一个方法:
CacheManager.ClearUserProfileCache(userName);
CacheManager.ClearIsInRoleCache(userName);
CacheManager.ClearAccessResultCache(userName);
所以理论上它应该做你需要的,但我还没有在实践中证实它。
【讨论】:
这会清除缓存,但我不确定新角色/配置文件是否再次添加并在上下文中可用。反复试验应该得出结论;)【参考方案2】:似乎注销和重新登录将设置正确的角色,因为在登录期间AuthenticationManager
将清除包含UserProfile
和Roles
的SecurityCache。
我没有看到向当前经过身份验证的用户添加新角色的方法。
【讨论】:
以上是关于Sitecore 6 是不是可以在已登录时更改虚拟用户的角色?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Sitecore 创建具有所有 Extranet 角色的虚拟用户?