在ASP中添加外部身份验证.净MVC
本文关键字:身份验证 MVC 外部 添加 ASP | 更新日期: 2023-09-27 17:51:18
我试图使用谷歌添加外部身份验证到MVC webapp
我从谷歌得到所有需要的信息,并保存我的appUser到DB后,我这样做:
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
if (info == null)
{
return View("ExternalLoginFailure");
}
// Password is a required field, although not actually needed here
model.Password = Guid.NewGuid().ToString();
AppUser user = await _profileService.CreateUserProfile(model, UserManager, true);
if (user != null)
{
var result = await UserManager.AddLoginAsync(user.Id, info.Login);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
return RedirectToLocal(returnUrl);
}
AddErrors(result);
}
和SignInManager。我得到一个异常
序列包含多于1个元素
堆栈跟踪信息不是很丰富:
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Microsoft.AspNet.Identity.TaskExtensions.CultureAwaiter`1.GetResult()
at Microsoft.AspNet.Identity.Owin.SignInManager`2.<ExternalSignInAsync>d__1d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at AccountController.<ExternalLoginCallback>d__31.MoveNext()
我有点困在这里,不知道如何获得更多的信息和在哪里看
您是否手动编辑您的数据库?
这个异常通常表明你在DB上搜索的东西认为你只有1行返回,当你试图访问它时,你有2行(或更多),所以id不知道访问哪一行。
使用Identity,它确保这些场景不会一致,这就是为什么我问你是否手动对你的DB做了一些事情。
扫罗