为什么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如何处理对页面的访问? 感谢。
答案 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);
}