在 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);
}
}
}
答案 0 :(得分:3)
似乎登出和重新登录将设置正确的角色,因为在登录期间AuthenticationManager
将清除包含UserProfile
和Roles
的SecurityCache。
我没有看到向当前经过身份验证的用户添加新角色的方法。
答案 1 :(得分:3)
您可以尝试使用
Sitecore.Caching.CacheManager.ClearSecurityCache(userName);
此方法调用另一种方法:
CacheManager.ClearUserProfileCache(userName);
CacheManager.ClearIsInRoleCache(userName);
CacheManager.ClearAccessResultCache(userName);
所以理论上它应该做你需要的但我没有在实践中证实它。