Ответ 1
Ответ прямо в вашем коде. Что это значит?
var userID = User.Identity.GetUserId();
Если вы используете идентификатор ASP.NET, тогда после входа (и перенаправления на другую страницу), IPrincipal.IIdentity
должен быть ClaimsIdentity
. Вы можете попробовать следующее:
var claimsIdentity = User.Identity as ClaimsIdentity;
if (claimsIdentity != null)
{
// the principal identity is a claims identity.
// now we need to find the NameIdentifier claim
var userIdClaim = claimsIdentity.Claims
.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier);
if (userIdClaim != null)
{
var userIdValue = userIdClaim.Value;
}
}
Вышеупомянутый блок кода не совсем, но по существу, что делает метод расширения IIdentity.GetUserId
.
Если ни одно из этих действий не работает, пользователь, возможно, еще не зашел на ваш сайт. После входа в систему вам необходимо перенаправить на другую страницу, прежде чем сервер будет записывать cookie аутентификации в браузер. Этот файл cookie должен быть записан до того, как User.Identity
получит всю эту информацию (включая NameIdentifier
) для последующих запросов.