如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

How to get logged user data in ASP.NET Core 5 MVC (.NET 5)?

我目前正在开发一个 ASP.NET Core 5 MVC web 项目,我使用默认创建的单用户帐户生成的模板来进行用户管理。我已经应用迁移并且它按预期工作正常。我需要登录用户,在 .NET 5 单用户帐户模板 AccountController 中不可见。我在控制器外尝试了以下代码,它给出了 null.

public class UserService  
{
    private readonly IHttpContextAccessor _context;

    public UserService(IHttpContextAccessor context)
    {
        _context = context;
    }

    public string GetUser()
    {
       return _context.HttpContext.User?.Identity?.Name;
    }
}

您可以在此处查看示例代码 (也许 ASP.NET 核心 1、2 或 3)

关注

public class MyController : Microsoft.AspNetCore.Mvc.Controller
var id = _userManager.GetUserId(User); // Get user id:

或其他方式

private UserManager<ApplicationUser> _userManager;

//class constructor
public MyController(UserManager<ApplicationUser> userManager)
{
    _userManager = userManager;
}

var user = await _userManager.GetUserAsync(User);
var email = user.Email;

因为这个问题与 .NET 5 相关,所以我不认为这个问题是重复的。如果 .NET 5 中有细微变化,请告诉我或修改小细节。