web-dev-qa-db-fra.com

Vérifiez si l'utilisateur est connecté avec l'authentification basée sur les jetons dans ASP.NET Core

J'ai réussi à implémenter ce système d'authentification basé sur des jetons dans mon application, mais j'ai une petite question. Comment puis-je vérifier si un utilisateur est signé (par exemple s'il y a un jeton valide dans la demande) dans la méthode? Donc, avec [Autoriser]?

J'ai donc un contrôleur, et dans ce contrôleur, je veux vérifier si l'utilisateur est connecté. J'ai pensé à utiliser ceci:

if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
    ...
}

mais cela ne fonctionne pas car ClaimsPrincipal.Current est toujours nul

13
user2657943

Vous n'avez pas besoin d'utiliser le SigninManager ou quelque chose de similaire. L'utilisateur est injecté sur le pipeline (sur la propriété Utilisateur du contrôleur de base) et ses informations sont renseignées automatiquement par le middleware d'authentification (cookie ou token). Donc, sur votre contrôleur:

bool isAuthenticated = User.Identity.IsAuthenticated;
45
Vi100

oui . mettre [Authorize] attribut au-dessus de votre classe ou méthodes pour vérifier si l'utilisateur est authentifié ou non. Vous pouvez obtenir l'utilisateur par ce code:

var principal = User as ClaimsPrincipal;
var check = User.Identity.IsAuthenticated;
2
Mostafa Esmaeili