为什么Sitecore虚拟用户不会更改Sitecore.Context.User?

时间:2013-03-06 15:06:57

标签: sitecore sitecore6

为什么AuthenticationManager.Login不会改变Sitecore.Context.User它总是匿名?

   string userName = string.Format("{0}\\{1}", "extranet", "Login");     
            Sitecore.Security.Accounts.User virtualUser =  SC.Security.Authentication.AuthenticationManager.BuildVirtualUser(userName, isAuthenticated);

 Sitecore.Security.Authentication.AuthenticationManager.Login(virtualUser.Name);

或者这是正确的行为吗? 在这种情况下,Sitecore如何处理对页面的访问? 感谢。

1 个答案:

答案 0 :(得分:4)

AuthenticationManager.Login()应该更改上下文用户。

您确定用户已登录吗?

您可以查看AuthenticationManager.Login()的结果值。如果用户已登录,则返回true,否则您仍会看到匿名用户。

以下是如何创建虚拟用户,为其分配角色并登录的示例代码:

Sitecore.Security.Accounts.User user = Sitecore.Security.Authentication
.AuthenticationManager.BuildVirtualUser(@"domain\user",true);

if(user!=null)
{
  string domainRole = @"domain\role";

  if(Sitecore.Security.Accounts.Role.Exists(domainRole))
  {
    user.Roles.Add(Sitecore.Security.Accounts.Role.FromName(domainRole));
  }

  Sitecore.Security.UserProfile profile = user.Profile;
  profile.FullName = "full name";
  profile.Save();
  Sitecore.Security.Authentication.AuthenticationManager.Login(user.Name);
}