在ASP.NET Core和OAuth中,与ASP.NET身份验证相关的,在登录回调中有以下片段代码:
由于某种原因,
更新:根据 @Dmitry 的建议,我启用了相当激进的日志记录,但我仍然无法找到任何有价值的东西。在成功获取
2017-07-04T22:45:14.2847287+02:00 0HL633KNRMVO7 [INF] Executed DbCommand (1ms) [Parameters=[@__get_Item_0='?' (Size = 450), @__get_Item_1='?' (Size = 450)], CommandType='Text', CommandTimeout='30'] SELECT TOP(1) [e].[LoginProvider], [e].[ProviderKey], [e].[ProviderDisplayName], [e].[UserId] FROM [AspNetUserLogins] AS [e] WHERE ([e].[LoginProvider] = @__get_Item_0) AND ([e].[ProviderKey] = @__get_Item_1) (6438bdd5)
在 MSSQL Management Studio 中执行此操作,我得到了一个空结果集,我怀疑这可能是一个问题,但我不知道为什么或如何修复它。非常感谢您的帮助。
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
return RedirectToAction(nameof(Login));
}
var result = await _signInManager.ExternalLoginSignInAsync(
info.LoginProvider,
info.ProviderKey,
isPersistent: true);
if (result.Succeeded)
{
// ...
由于某种原因,
result
总是返回状态 Failed
,尽管我已经成功登录到外部提供程序(显然,因为刷新外部页面后我会看到自己已登录)。除了登录尝试失败之外,我所拥有的唯一信息是 不是 因为任何 IsLockedOut
、RequiresTwoFactor
或 IsNotAllowed
,因为这些标志在 result
对象上也是 false
。如何获取更多有关发生了什么错误的信息?更新:根据 @Dmitry 的建议,我启用了相当激进的日志记录,但我仍然无法找到任何有价值的东西。在成功获取
info
和随后的登录尝试失败之间,我在日志中唯一得到的东西是来自我的 db 上下文的以下内容:2017-07-04T22:45:14.2847287+02:00 0HL633KNRMVO7 [INF] Executed DbCommand (1ms) [Parameters=[@__get_Item_0='?' (Size = 450), @__get_Item_1='?' (Size = 450)], CommandType='Text', CommandTimeout='30'] SELECT TOP(1) [e].[LoginProvider], [e].[ProviderKey], [e].[ProviderDisplayName], [e].[UserId] FROM [AspNetUserLogins] AS [e] WHERE ([e].[LoginProvider] = @__get_Item_0) AND ([e].[ProviderKey] = @__get_Item_1) (6438bdd5)
在 MSSQL Management Studio 中执行此操作,我得到了一个空结果集,我怀疑这可能是一个问题,但我不知道为什么或如何修复它。非常感谢您的帮助。
AspNetUserLogins
?)应该有一行记录成功登录的信息,对吗?我没有这样的记录是否表示在登录时或配置时出现错误? - Tomas Aschan