AuthenticationManager.GetExternalLoginInfoAsync始终为null

时间:2018-12-07 07:41:18

标签: c# asp.net asp.net-mvc

我有带有不同第三方身份验证提供程序的ASP.NET MVC 5 Web应用程序(Facebook,Vkontakte aka VK,Odnoklassniki aka OK)。我将Microsoft.Owin.Security.Facebook用于Facebook身份验证,并将KatanaContrib.Security.VKKatanaContrib.Security.Odnoklassniki用于其他人(我有一些自定义的VK,可以满足我的目的)

3天前,一切都很好,但是由于我的一些客户抱怨他们无法使用第三方提供商登录。我还可以通过一些有趣的观点来复制问题

  • 对我来说,它不是永久存在于Google Chrome浏览器(71.0.3578.80版)中
  • 它在Opera中是永久存在的(版本:57.0.3098.91)
  • 当我的Web应用程序在本地或dev.site.ru(Chrome和Opera)上运行时,我可以登录

我已在身份验证工作流程中添加了更多日志,并发现了

  • AuthenticationManager.GetExternalLoginInfoAsync()始终返回 在Opera中为空
  • .AspNet.Correlation.* cookie在Chrome的登录过程结束时被删除,但在Opera中未删除

我拥有所有Microsoft.OwinMicrosoft.Owin.Security.*版本4.0.0。我还将提供商使用的API升级到最新版本。但这对我没有帮助。我还将日志添加到VK身份处理程序中,发现AuthenticationTicket不为null,并且在Identity中包含相关信息

任何想法可能有什么问题?也许您可以给我一些进一步调查的指导?

1 个答案:

答案 0 :(得分:0)

在更新所有Microsoft.Owin.Security.*之后,我发现如果ASP.Net_SessionId cookie尚未创建,则登录失败(GetExternalLoginInfoAsync返回null),但可以登录(如果存在)。因此,将代码Session["logging"]=true放入登录页面即可解决该问题。

还提到了as shown here