У меня возникла проблема в области моего веб-сайта, где мне нужно получить идентификатор пользователя. Я попытался использовать HttpContext.User и введенный IHttpContextAccessor, оба дают мне идентификатор, который 1) не совпадает пользователь и 2) даже не существуют в моей базе данных!
Я также пытался внедрить UserManager и вызывать GetUserId для него, и это тоже дает мне неправильный идентификатор (еще раз, без понятия откуда, это не так в базе данных). Вызов GetUserAsyn c для него возвращает ноль.
Я не использую ничего особенного и необычного, страницу по умолчанию, включенную в ядро idendity для входа, просто контекст, который наследуется от IdentityDbContext, и часть входа работает просто хорошо, поскольку эти страницы находятся за тегом Authorize и вынуждают меня войти в систему. Если я получаю сообщение об ошибке, я могу копать, но я просто получаю Id, который, кажется, возник из ниоткуда и в недоумении где искать.
Вот как выглядят претензии при звонке
HttpContext.User.Claims.ToList()
[0]: {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: f478bf7a-1734-494c-aad6-0882ab24007f} <-- this id is not present in AspNetUsers table
[1]: {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: EDITED OUT FOR PRIVACY} <-- my correct username (my email)
[2]: {AspNet.Identity.SecurityStamp: EDITED OUT}
[3]: {http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Administrator} <-- correctly finds my role too