User.FindFirstValue(ClaimTypes.NameIdentifier) 是否从数据库中获取数据?

Is User.FindFirstValue(ClaimTypes.NameIdentifier) getting data from the database?

如果我这样做,找到登录用户的 ID:

Guid uId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

数据库是通过 UserManager 查询的,还是信息位于其他地方?在 cookie 中?

有些时候,我想在ApplicationUser上加载相关数据,而我不想两次访问数据库。我不确定这是否算作两次旅行:

Guid uId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));
ApplicationUser user = await db.Users
    .Include(c => c.City)
    .Where(u => u.Id == uId).FirstOrDefaultAsync();

我很确定这算作两个:

var usr = await _userManager.GetUserAsync(User);
ApplicationUser user = await db.Users
    .Include(c => c.City)
    .Where(u => u.Id == usr.Id).FirstOrDefaultAsync();

User.FindFirstValue 适用于当前的 HttpContext(参见 User 属性),与数据库无关。
相反,它适用于当前的 HTTP 请求和 cookie。