1

为什么 AuthenticationManager.Login 不会更改 Sitecore.Context.User 它总是 Anonymous ?

   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 如何处理对页面的访问?谢谢。

4

1 回答 1

4

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

您确定用户已登录吗?

您可以检查AuthenticationManager.Login(). 如果用户已登录,则返回 true,否则您仍会看到 Anonymous 用户。

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

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);
}
于 2013-03-06T16:23:23.843 回答