簡體   English   中英

.NET Core MVC:無需創建帳戶即可驗證外部登錄

[英].NET Core MVC: validate external login without creating account

我想利用Microsoft.AspNetCore.Authentication.MicrosoftAccount的在.NET核心MVC應用程序作為解釋在這里 ,但我想跳過存儲層,從而使用戶不輸入到數據庫中。

我想要實現的是:好的,我的用戶只是外部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

那么,有沒有辦法實現這一目標,或者我正在嘗試的工作完全違反了身份原則?

謝謝!

本文顯示了如何在沒有ASP.NET身份(即沒有數據庫)的情況下使用ASP.NET OAuth提供程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM