Подтвердить что ты не робот

Получить идентификатор текущего пользователя в ASP.NET Identity 2.0

Я просто переключился на использование новой версии 2.0 Identity Framework. В 1.0 я мог получить пользовательский объект, используя manager.FindByIdAsync(User.Identity.GetUserId()). Метод GetUserId(), похоже, не существует в 2.0.

Теперь все, что я могу понять, это использовать manager.FindByEmailAsync(User.Identity.Name), который ссылается на поле username в таблице users. В моем приложении это установлено так же, как поле электронной почты.

Я вижу, что это вызывает проблемы, когда кто-то нуждается в обновлении своей электронной почты. Есть ли способ получить текущий зарегистрированный пользовательский объект на основе неизменяемого значения (например, поля id) в Framework Identity 2.0?

4b9b3361

Ответ 1

GetUserId() - это метод расширения на IIdentity, и он находится в Microsoft.AspNet.Identity.IdentityExtensions. Убедитесь, что вы добавили пространство имен с помощью using Microsoft.AspNet.Identity;.

Ответ 2

Чтобы получить CurrentUserId в Asp.net Identity 2.0, сначала импортируйте Microsoft.AspNet.Identity:

С#

using Microsoft.AspNet.Identity;

VB.NET:

Imports Microsoft.AspNet.Identity


А затем вызовите User.Identity.GetUserId() везде, где хотите:

strCurrentUserId = User.Identity.GetUserId()

Этот метод возвращает текущий идентификатор пользователя как определенный тип данных для userid в базе данных (по умолчанию это String).

Ответ 3

На всякий случай, когда вы похожи на меня, а поле идентификатора объекта пользователя - это Int или что-то другое, кроме строки,

using Microsoft.AspNet.Identity;

int userId = User.Identity.GetUserId<int>();

выполнит трюк

Ответ 4

Я была такая же проблема. В настоящее время я использую Asp.net Core 2.2. Я решил эту проблему с помощью следующего фрагмента кода.

using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);

Я надеюсь, что это будет кому-то полезно.