ASP.NET 核心 - 无法从 System.security.claims.claimsPrincipal 转换为 Scheduler.Areas.Identity.Data
ASP.NET Core - Cannot convert from System.security.claims.claimsPrincipal to Scheduler.Areas.Identity.Data
我正在尝试获取当前用户 ID,以便我的活动索引页面将仅显示来自当前用户的活动。
我的 HttpContext.User 在我的事件控制器的索引中出现错误“无法从 System.security.claims.claimsPrincipal 转换为 Scheduler.Areas.Identity.Data”。
var userId = await _userManager.GetUserIdAsync(HttpContext.User);
这是我的 EventsController 中的代码:
public EventsController(SchedulerDbContext context, UserManager<SchedulerUser> userManager)
{
_context = context;
_userManager = userManager;
}
// GET: Events
[Authorize]
public async Task<IActionResult> Index()
{
var userId = await _userManager.GetUserIdAsync(HttpContext.User);
return View(await _context.Events.Where(g => g.SchedulerUser == userId).ToListAsync());
}
我应该在哪里寻找解决这个问题的方法?如果需要,我会更新更多代码。
GetUserIdAsync
只接受 IdentityUser
类型。它不接受 ClaimsPrincipal
类型,但 GetUserAsync
接受。
var user = await _userManager.GetUserAsync(HttpContext.User);
var userId = user.Id;
或者,您也可以从 claimidentity 获取 Id 声明。
var userId = claimsIdentity.FindFirst("id")?.Value;
我正在尝试获取当前用户 ID,以便我的活动索引页面将仅显示来自当前用户的活动。
我的 HttpContext.User 在我的事件控制器的索引中出现错误“无法从 System.security.claims.claimsPrincipal 转换为 Scheduler.Areas.Identity.Data”。
var userId = await _userManager.GetUserIdAsync(HttpContext.User);
这是我的 EventsController 中的代码:
public EventsController(SchedulerDbContext context, UserManager<SchedulerUser> userManager)
{
_context = context;
_userManager = userManager;
}
// GET: Events
[Authorize]
public async Task<IActionResult> Index()
{
var userId = await _userManager.GetUserIdAsync(HttpContext.User);
return View(await _context.Events.Where(g => g.SchedulerUser == userId).ToListAsync());
}
我应该在哪里寻找解决这个问题的方法?如果需要,我会更新更多代码。
GetUserIdAsync
只接受 IdentityUser
类型。它不接受 ClaimsPrincipal
类型,但 GetUserAsync
接受。
var user = await _userManager.GetUserAsync(HttpContext.User);
var userId = user.Id;
或者,您也可以从 claimidentity 获取 Id 声明。
var userId = claimsIdentity.FindFirst("id")?.Value;