我試圖檢查登錄後的用戶電子郵件確認狀態,然後指示他們。_userManager.GetUserAsync(用戶)返回null
基於這兩個線程:
ASP.NET Core Identity - get current user
How get current user in asp.net core
我嘗試這樣做:
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
ClaimsPrincipal currentUser = this.User;
var thisUser = await _userManager.GetUserAsync(currentUser);
if(thisUser.EmailConfirmed)
{
return View("~/Views/Task/Index.cshtml");
}
else
{
return View("ConfirmEmail");
}
}
而且也是這樣:
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
var thisUser = await _userManager.GetUserAsync(HttpContext.User);
if(thisUser.EmailConfirmed)
{
return View("~/Views/Task/Index.cshtml");
}
else
{
return View("ConfirmEmail");
}
}
從內部控制器,但thisUser
始終爲空。
如何在登錄時檢查他們的電子郵件是否已確認並重新定向?
如果你能從我的答案得到你的解決方案,你應該接受我的答案不張貼你自己的答案。 –
我的第二個解決方案正是'根據您已經擁有的電子郵件從任何地方讀取數據',這就是您所做的。 –
這並非完全正確。您可以在不重定向的情況下設置cookie(當然需要)。這正是你在這個答案中所做的,這正是我在第二個解決方案中暗示的內容 –