当前位置:  开发笔记 > 编程语言 > 正文

SignInManager :: ExternalLoginSignInAsync返回IsNotAllowed进行社交登录

如何解决《SignInManager::ExternalLoginSignInAsync返回IsNotAllowed进行社交登录》经验,为你挑选了1个好方法。

我正在使用Microsoft.NetCore.App v1.1.0(2016年11月16日)并构建了一个标准的MVC Web App,我根据Microsoft Docs提供的建议为Microsoft和Google添加了社交登录.

在第一次使用Google(或Microsoft)登录时,它按预期工作 - 即在我的Google帐户验证后,我的WebApp向我提供了一个注册网页,要求我提供与我的Google帐户关联的电子邮件地址,然后我登录我的WebApp.不幸的是,第二次登录时也会发生同样的情况,因此很明显注册失败,因为电子邮件地址已经在我的AspNetUsers表中.

我在AccountController :: ExternalLoginCallback()中的_signInManager.ExternalLoginSignInAsync()上设置了一个断点.在第一次登录时,它返回Result.Succeeded false,可能是因为电子邮件未注册.在第二次登录期间,它返回Result.IsNotAllowed,它不由以下一系列'if'语句处理,因此由'else'块处理 - 与Result.Succeeded false相同.

有谁知道Result.IsNotAllowed是什么意思以及为什么设置它?有解决方法吗?

谢谢威尔



1> 小智..:

我只是遇到了同样的麻烦.您可能在startup.cs中有以下行:

services.AddIdentity(config => config.SignIn.RequireConfirmedEmail = true)

如果您查看github上的Identity源代码,您会看到在尚未确认电子邮件时返回IsNotAllowed.如果这是第三方提供商或本地帐户,则无关紧要.要解决此问题,请在创建和存储ApplicationUser时设置EmailConfirmed = true.在模板项目中是ExternalLoginConfirmation方法.

var user = new ApplicationUser { UserName = model.Email, Email = model.Email, EmailConfirmed = true};

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有