Obtenir l'identifiant de l'utilisateur d'une identité de nom d'utilisateur 2.0
MVC 5 avec asp.net identité 2.0
Je comprends comment obtenir de l'utilisateur actuellement connecté id. J'ai besoin d'obtenir l'id d'utilisateur d'un autre utilisateur dans le système. Comment est-ce fait?
Ex. J'ai besoin d'obtenir l'id utilisateur de noms d'utilisateur "fsmith" ...
source d'informationauteur BTI-Doug
Vous devez vous connecter pour publier un commentaire.
À l'intérieur de la AccountController vous pouvez appeler la méthode suivante pour obtenir de l'utilisateur de l'objet, puis obtenir l'Id de l'Utilisateur.
Si vous n'êtes pas à l'intérieur de AccountController vous pouvez obtenir le UserManager référence à l'aide du code suivant
À ajouter à Shashi réponse utile...
Si vous êtes à l'intérieur du compte contrôleur, vous pouvez utiliser le UserManager:
Dans d'autres contrôleurs (et peut-être sélectionner d'autres endroits où HttpContext est disponible) vous créez un Gestionnaire d'Utilisateur:
Mais ce qu'il m'a fallu du temps pour comprendre, c'est que vous pouvez obtenir à peu près n'importe où avec ce dernier. Par exemple, je l'ai utilisé dans ma graine méthode (dans la Configuration.cs) afin que je puisse les semences de la propriété de l'Utilisateur d'un autre modèle:
On pourrait utiliser le FindByNameAsync méthode de votre gestionnaire d'utilisateurs (ou de la version générique de celui-ci). Elle prend le nom de l'utilisateur (dans votre cas "fsmith") et renvoie une tâche d'un objet utilisateur. Cet objet utilisateur contient toutes les informations disponibles à propos de cet utilisateur.
Un extrait de code pourrait ressembler à la suivante (si vous êtes à la recherche pour l'ID de base de données):
MODIFIER
Le UserManager instance est normalement déclarée comme suit (gardez à l'esprit qu'il ya beaucoup de façons de le déclarer, par exemple lors de l'utilisation de l'Injection de Dépendance):
Si vous utilisez Portant Jeton d'Authentification, l'exemple ci-dessus ne sont pas de retour d'un Utilisateur de l'Application.
Au lieu de cela, utilisez ceci:
Cela fonctionne dans apsnetcore 2.0. N'ai pas essayé dans les versions antérieures.