2017-07-18 120 views
0

我想在.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

那么,有没有办法实现这一点,或者我正在尝试违背身份原则?

谢谢!

+0

你真正想要的是Windows身份验证。不需要身份管理。在您的应用程序中,您只需使用标准授权属性即可授予访问权限。这可以通过角色,用户等完成。 –

回答

0

This article显示如何在没有ASP.NET身份的情况下使用ASP.NET OAuth提供程序,换句话说没有数据库。

相关问题