首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SignInManager::ExternalLoginSignInAsync返回用于社交登录的IsNotAllowed

SignInManager::ExternalLoginSignInAsync返回用于社交登录的IsNotAllowed
EN

Stack Overflow用户
提问于 2017-01-11 18:47:19
回答 1查看 2.9K关注 0票数 10

我正在使用Microsoft.NetCore.App v1.1.0 (2016年11月16日),并构建了一个标准的MVC,我在其中添加了用于微软和谷歌的社交登录,并遵循了Microsoft的建议。

在第一次使用谷歌(或微软)登录时,它如预期的那样工作--即,在我的谷歌帐户认证之后,我的WebApp向我展示了一个注册网页,要求我提供一个电子邮件地址,以便与我的谷歌帐户相关联,然后登录到我的WebApp中。不幸的是,同样的情况发生在第二次登录,因此显然注册失败,因为电子邮件地址已经在我的AspNetUsers表中。

我在AccountController中对_signInManager.ExternalLoginSignInAsync()设置了一个断点::ExternalLoginCallback()。在第一次登录时,它返回Result.Succeeded false,大概是因为电子邮件没有注册。在第二次登录期间,它返回Result.IsNotAllowed,它不是由下面一系列的'if‘语句处理的,因此由’Result.Succeeded‘块处理--与Result.Succeeded false一样。

有人知道Result.IsNotAllowed是什么意思吗?为什么要设置它?有解决办法吗?

谢谢威尔

EN

回答 1

Stack Overflow用户

发布于 2020-11-25 11:20:40

其实有一个更简单的解决办法,如果你想确认用户的电子邮件来自社会登录提供商在某个点,而不是自动标记为确认。您可以在注册后检索用户,并将电子邮件标记为已确认的邮件,而无需将其保存到数据存储库。

代码语言:javascript
复制
var user = await _userManager.FindByLoginAsync(info.LoginProvider, info.ProviderKey);
if (!user.EmailConfirmed)
{
    user.EmailConfirmed = true;
    // Don't save this to the DB
}

var signInResult = await _signInManager.ExternalLoginSignInAsync();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41598437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档