web-dev-qa-db-fra.com

Obtenir l'ID utilisateur actuel dans ASP.NET Identity 2.0

Je viens de passer à la nouvelle version 2.0 d'Identity Framework. Dans la version 1.0, je pouvais obtenir un objet utilisateur en utilisant manager.FindByIdAsync(User.Identity.GetUserId()). La méthode GetUserId() ne semble pas exister dans la version 2.0.

Maintenant, tout ce que je peux comprendre, c’est d’utiliser manager.FindByEmailAsync(User.Identity.Name), qui référence le champ nom d’utilisateur dans la table users. Dans mon application, ce paramètre est identique à celui du champ de courrier électronique.

Je peux voir que cela cause des problèmes plus tard lorsque quelqu'un doit mettre à jour son courrier électronique. Existe-t-il un moyen d'obtenir que l'objet utilisateur actuellement connecté soit basé sur une valeur immuable (comme le champ id) dans Identity 2.0 Framework?

73
jasonpresley

GetUserId() est une méthode d'extension sur IIdentity et elle se trouve dans Microsoft.AspNet.Identity.IdentityExtensions. Assurez-vous d'avoir ajouté l'espace de noms avec using Microsoft.AspNet.Identity;.

95
Anthony Chu

Pour obtenir CurrentUserId dans Asp.net Identity 2.0, importez d'abord Microsoft.AspNet.Identity:

C #:

using Microsoft.AspNet.Identity;

VB.NET:

Imports Microsoft.AspNet.Identity


Et appelez ensuite User.Identity.GetUserId() où vous voulez:

strCurrentUserId = User.Identity.GetUserId()

Cette méthode renvoie l'ID utilisateur actuel en tant que type de données défini pour l'ID utilisateur dans la base de données (la valeur par défaut est String).

53
Moshtaf

Juste au cas où vous êtes comme moi et que le champ Id de l’entité utilisateur est un Int ou autre chose qu’une chaîne,

using Microsoft.AspNet.Identity;

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

va faire l'affaire

12
Seth IK

J'ai eu le même problème. J'utilise actuellement Asp.net Core 2.2. J'ai résolu ce problème avec le code suivant.

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

J'espère que cela sera utile à quelqu'un.

0
Mohsin