Sitecore 6.6 update 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 ロールのユーザーを作成すると、ロールを正常に追加できることを発見しましたが、同じユーザー名でログアウトおよびログイン手順を実行すると、最初に追加されたロールが自動的に新しいユーザーにアタッチされます。私の意見では、誰かが外部システムでユーザーの役割を編集できる場合、この動作は良くありません。