Login sitecore用户域和角色返回null

Login sitecore用户域和角色返回null,login,sitecore,sitecore6,Login,Sitecore,Sitecore6,我有一个sitecore设置,带有前端登录页,供外部网用户访问站点内受限制的页面 外部网用户当前正在使用持久性标志equal true登录 global::Sitecore.Security.Domains.Domain domain = global::Sitecore.Context.Domain; var isLogginedIn = AuthenticationManager.Login(domain + @"\" + email, password, true); 这将成功运行,并且

我有一个sitecore设置,带有前端登录页,供外部网用户访问站点内受限制的页面

外部网用户当前正在使用持久性标志equal true登录

global::Sitecore.Security.Domains.Domain domain = global::Sitecore.Context.Domain;
var isLogginedIn = AuthenticationManager.Login(domain + @"\" + email, password, true);
这将成功运行,并且上下文设置正确

下面是在同一请求中登录后立即窗口的输出

global::Sitecore.Context.User.Domain
extranet

global::Sitecore.Context.User.Roles.Count()
1

global::Sitecore.Context.User.IsAuthenticated()
true
用户登录后,会将用户重定向到他们想要访问的页面

下面是任何后续请求的即时窗口输出

global::Sitecore.Context.User.Domain
null

global::Sitecore.Context.User.Roles.Count()
0

global::Sitecore.Context.User.IsAuthenticated()
true
有人知道为什么我会在后续请求中丢失一些上下文项吗


提前感谢

您似乎正在尝试为Sitecore创建自己的登录页面。在这种情况下,您可以尝试启动
日志记录
管道,而不是调用
AuthenticationManager。登录
方法:

var loggingInArgs = new LoggingInArgs
{
    Username = userName,
    Password = password,
    StartUrl = startUrl
};

Pipeline.Start("loggingin", loggingInArgs);
bool isLogginedIn = loggingInArgs.Success;

这是一个补丁来隐藏这个问题,而不是一个适当的解决方案,但我会张贴任何人,以防它触发任何其他人对此有任何进一步的想法

我在自定义管道期间调用以下代码

if (user.Domain == null && user.IsAuthenticated)
{
   var domainUser = string.Format(@"extranet\{0}", user.LocalName);
   var membershipUser = Membership.GetUser(domainUser);

   if (membershipUser != null)
   {
      AuthenticationManager.Login(domainUser, membershipUser.GetPassword(), true);
   }
}

调用后,用户已正确设置域和角色。奇怪的是,在此之后的所有其他请求都有一个正确设置的用户。

我遇到了一个问题,域为null,角色为空。
原因是我使用了asp:Login控件让用户登录。当我用标准文本、密码和按钮控件替换此选项时,问题消失了。

感谢您的快速响应,但我无法使用该方法登录。我收到以下消息:
您无权访问系统。如果您认为这是错误的,请与系统管理员联系。\n\n您的登录尝试未成功。请重试。\n\n您没有访问系统的权限。如果您认为这是错误的,请与系统管理员联系。\n\n据我所知,登录管道仅用于后端访问。这是外联网域上网站用户的登录页。