我正在尝试利用.NET核心MVC应用中的Microsoft.AspNetCore.Authentication.MicrosoftAccount,如here所述,但我想跳过存储层,以便用户不会输入数据库。
我想要实现的是:好吧,我的用户只是外部Microsoft帐户,我不对它们进行任何管理,我只是让他们登录到应用程序并检查,以某种方式(列表或其他)哪个一些是允许的(如john@boo.com可以登录,并且由于他的身份经过Microsoft帐户验证,嗯,然后他可以进入)。
我所做的是从典型的
开始dotnet new mvc --auth Individual
他们修改它以支持Microsoft帐户,并且有效。
但是,我想绕过在数据库中创建用户,并将其登录。我尝试了以下内容:
// GET: /Account/ExternalLoginCallback
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
{
if (remoteError != null)
{
ModelState.AddModelError(string.Empty, $"Error from external provider: {remoteError}");
return View(nameof(Login));
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
return RedirectToAction(nameof(Login));
}
var email = info.Principal.FindFirstValue(ClaimTypes.Email);
var user = new ApplicationUser { UserName = email, Email = email };
// var result = await _userManager.CreateAsync(user);
await _signInManager.SignInAsync(user, isPersistent: false);
_logger.LogInformation(3, "Microsoft account logged in.");
return RedirectToLocal(returnUrl);
}
但如果我不这样做
_userManager.CreateAsync
它悲惨地失败了:-S
那么,有没有办法实现这一点,或者我正在尝试的方法违背了身份原则?
谢谢!