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。
如果我这样做,找到登录用户的 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。