Sitecore 6是否可以在已登录时更改虚拟用户的角色?

时间:2013-04-10 13:43:15

标签: security sitecore sitecore6

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);
        }
    }
}

2 个答案:

答案 0 :(得分:3)

似乎登出和重新登录将设置正确的角色,因为在登录期间AuthenticationManager将清除包含UserProfileRoles的SecurityCache。 我没有看到向当前经过身份验证的用户添加新角色的方法。

答案 1 :(得分:3)

您可以尝试使用

Sitecore.Caching.CacheManager.ClearSecurityCache(userName);

此方法调用另一种方法:

CacheManager.ClearUserProfileCache(userName);
CacheManager.ClearIsInRoleCache(userName);
CacheManager.ClearAccessResultCache(userName);

所以理论上它应该做你需要的但我没有在实践中证实它。

相关问题