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


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

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

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

3 71

3 ответа:

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

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

C#:

using Microsoft.AspNet.Identity;

VB.NET:

Imports Microsoft.AspNet.Identity


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

strCurrentUserId = User.Identity.GetUserId()

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

на всякий случай, если вы похожи на меня, а поле Id объекта User-это Int или что-то еще, кроме строки,

using Microsoft.AspNet.Identity;

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

будет делать трюк