注册外部登录时CreateUserAsync失败

 MwMw在不在_669_301_603 发布于 2023-02-06 16:01

我正在使用asp.net mvc 5模板处理单页应用程序并注册外部登录(在此实例中为google)失败并出现验证异常 - "UserId字段是必需的".有问题的代码:

// POST api/Account/RegisterExternal [OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[Route("RegisterExternal")]
public async Task RegisterExternal(RegisterExternalBindingModel model)
{
    try
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);

        if (externalLogin == null)
        {
            return InternalServerError();
        }

        IdentityUser user = new IdentityUser//(model.UserName);
        {
             UserName = model.UserName
        };
        user.Logins.Add(new IdentityUserLogin
        {
             LoginProvider = externalLogin.LoginProvider,
             ProviderKey = externalLogin.ProviderKey
        });
        IdentityResult result = await UserManager.CreateAsync(user);
        IHttpActionResult errorResult = GetErrorResult(result);

        if (errorResult != null)
        {
           return errorResult;
        }

        return Ok();
    }
    catch (Exception exception)
    {
        throw;
    }
}

我很感激帮助

1 个回答
  • 修复很简单,但我觉得很奇怪,模板生成的代码不能开箱即用.IdentityUserLogin对象具有必须设置的UserID属性.

    IdentityUser user = new IdentityUser
    {
        UserName = model.UserName
    };
    user.Logins.Add(new IdentityUserLogin()
    {
        LoginProvider = externalLogin.LoginProvider,
        ProviderKey = externalLogin.ProviderKey, 
        UserId = user.Id
    });
    IdentityResult result = await UserManager.CreateAsync(user);
    

    2023-02-06 16:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有