.NET核心MVC:验证外部登录而不创建帐户
问题描述:
我想在.NET Core MVC应用程序中利用Microsoft.AspNetCore.Authentication.MicrosoftAccount,解释如下here,但我想跳过存储层,以便用户不会进入数据库。.NET核心MVC:验证外部登录而不创建帐户
我想实现的是:好吧,我的用户只是外部的微软账户,我不会对他们进行任何管理,我只是让他们登录到应用程序并以某种方式(列表或其他)哪些是允许的(如[email protected]可以登录,并且由于他的身份已经由Microsoft帐户验证,那么他可以进入)。
我所做的是开始与典型
dotnet new mvc --auth Individual
他们修改它支持微软帐户和工作。 。
但是,我想绕过在数据库中创建用户,并且只要登录他在我试过如下:
// 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
那么,有没有办法实现这一点,或者我正在尝试违背身份原则?
谢谢!
你真正想要的是Windows身份验证。不需要身份管理。在您的应用程序中,您只需使用标准授权属性即可授予访问权限。这可以通过角色,用户等完成。 –