为什么Sitecore虚拟用户不更改Sitecore.Context.User?
为什么AuthenticationManager.Login不会更改Sitecore.Context.User它始终是匿名的为什么Sitecore虚拟用户不更改Sitecore.Context.User?,sitecore,sitecore6,Sitecore,Sitecore6,为什么AuthenticationManager.Login不会更改Sitecore.Context.User它始终是匿名的 string userName = string.Format("{0}\\{1}", "extranet", "Login"); Sitecore.Security.Accounts.User virtualUser = SC.Security.Authentication.AuthenticationManager.Build
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如何处理对页面的访问?
谢谢。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);
}
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);
}
尝试使用Sitecore.Security.Authentication.AuthenticationManager.GetActiveUser来检索登录用户。尝试使用Sitecore.Security.Authentication.AuthenticationManager.GetActiveUser来检索登录用户。我不知道为什么,但Loginuser.Name不起作用。如果它发送完整的Sitecore.Security.Accounts.user对象,则它起作用。有确实是一个覆盖方法Sitecore.Security.Authentication.AuthenticationManager.LoginUser,该方法以Sitecore.Security.Accounts.User对象为参数。修改了答案以使用RuntimeSettings我不知道为什么,但LoginUser.Name不起作用。如果它发送完整的Sitecore.Security.Accounts.User对象,则它起作用。确实存在将Sitecore.Security.Authentication.AuthenticationManager.LoginUser对象作为参数的覆盖方法Sitecore.Security.Accuonts.User。修改了答案以使用RuntimeSettings