2017-09-08 3 views
3

Après beaucoup de difficultés (et beaucoup de tuturials, guides, etc) j'ai réussi à installer une petite API Web .NET Core REST avec un Le contrôleur d'authentification qui émet des jetons JWT lorsque le nom d'utilisateur et le mot de passe sont valides est valide.Comment puis-je obtenir l'utilisateur actuel dans .NET Core Web API (à partir de JWT Token)

Le jeton stocke l'ID utilisateur en tant que sous-revendication.

J'ai également réussi à configurer l'API Web pour valider ces jetons lorsqu'une méthode utilise l'annotation Autoriser.

 app.UseJwtBearerAuthentication(...)

Ma question: Comment lire l'ID utilisateur (stocké dans la demande de sujet) dans mes contrôleurs (dans une API Web)?

Il s'agit essentiellement de cette question (How do I get current user in ASP .NET Core) mais j'ai besoin d'une réponse pour une API web. Et je n'ai pas de UserManager. J'ai donc besoin de lire la revendication de quelque part.

+0

Il devrait être le même pour « web api » .. Dans ASP.NET base Mvc et Web Api sont fusionnés pour utiliser le même contrôleur. –

Répondre

2

Vous pouvez utiliser cette méthode:

var email = User.FindFirst("sub")?.Value; 

Dans mon cas, j'utilise l'e-mail comme une valeur unique

+0

Merci, devrait être marqué comme réponse acceptée! Pour le nom d'utilisateur: User.Identity.Name. L'utilisateur est une propriété de Microsoft.AspNetCore.Mvc.ControlerBase et son type est System.Security.Claims.ClaimsPrincipal. Juste ajouter. – heringer