我不确定Sitecore 6.6 更新 3BuildVirtualUser
中的方法行为
我有以下代码:
bool isAuthenticated = true;
string userName = string.Format("{0}\\{1}", "extranet", user.Login);
SC.Security.Accounts.User virtualUser = SC.Security.Authentication.AuthenticationManager.BuildVirtualUser(userName, isAuthenticated);
但在BuildVirtualUser
方法调用 virtualUser 变量后包含所有外联网角色。我希望我的以下代码应该将角色附加到用户。
foreach(var role in user.Permissions)
{
string domainRole = string.Format("{0}\\{1}", "extranet", "USER_EDIT");
if (SC.Security.Accounts.Role.Exists(domainRole))
{
virtualUser.RuntimeSettings.AddedRoles.Add(domainRole);
}
}
为什么会这样?我需要做什么来修复它?
更新 1
我发现第一次 BuildVirtualUser 创建具有 0 个角色的用户时,可以成功添加角色,但是在使用相同用户名注销和登录过程之后,第一次添加的角色会自动附加到新用户。在我看来,这种行为并不好,以防有人可以在外部系统中编辑用户角色。