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
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;
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;