3

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

2 回答 2

3

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

于 2013-04-10T14:42:17.327 回答
3

你可以尝试使用

Sitecore.Caching.CacheManager.ClearSecurityCache(userName);

此方法调用另一个方法:

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

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

于 2013-04-10T15:31:17.167 回答