当前登录的 ApplicationUser 使用 UserManager GetUserAsync 方法返回为 null
Current logged in ApplicationUser returned as null with UserManager GetUserAsync method
我正在尝试获取当前登录的用户并将其转换为正确的 class 以进行操作。
在我的控制器中 class 我有以下代码:
private async void GetCurrentUser()
{
_currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}
我在我的 Index 方法中调用了这个方法:
public IActionResult Index()
{
GetCurrentUser();
if (_currentCursist == null)
{
return View("~/Views/Error/DefaultError.cshtml");
}
return View();
}
_currentCursist 值将始终为空。我尝试了几种不同的方法,但它总是导致空值。为什么会这样?
httpContext.User
值填充当前用户,_userManager
包含登录用户。在使用 GetUserAsync 方法时,不知何故没有给我用户?
我找到了有关异步方法的更多信息。避免 async void
方法很重要。我将方法更改为以下内容:
private async Task GetCurrentUser()
{
_currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}
并使用了以下方法调用:
GetCurrentUser().Wait();
我很确定我得到的是空值,因为我没有在等待响应。通过使用 async task
我可以延迟执行,这导致活动用户的 return。
我正在尝试获取当前登录的用户并将其转换为正确的 class 以进行操作。
在我的控制器中 class 我有以下代码:
private async void GetCurrentUser()
{
_currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}
我在我的 Index 方法中调用了这个方法:
public IActionResult Index()
{
GetCurrentUser();
if (_currentCursist == null)
{
return View("~/Views/Error/DefaultError.cshtml");
}
return View();
}
_currentCursist 值将始终为空。我尝试了几种不同的方法,但它总是导致空值。为什么会这样?
httpContext.User
值填充当前用户,_userManager
包含登录用户。在使用 GetUserAsync 方法时,不知何故没有给我用户?
我找到了有关异步方法的更多信息。避免 async void
方法很重要。我将方法更改为以下内容:
private async Task GetCurrentUser()
{
_currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}
并使用了以下方法调用:
GetCurrentUser().Wait();
我很确定我得到的是空值,因为我没有在等待响应。通过使用 async task
我可以延迟执行,这导致活动用户的 return。