0
votes

Obtenir le nom de l'utilisateur actuellement connecté

J'ai fait une connexion simple à l'aide de l'identité. Je me suis connecté avec SigninManager.Passwordsigninasync () .

Si la connexion a été réussie, je voudrais obtenir les données de l'utilisateur actuellement connectées à l'aide du usermanager .

Le problème est que je ne peux obtenir qu'un identifiant à partir du getuserasync et je ne sais pas quoi faire avec elle. xxx


7 commentaires

Quels types sont userData et utilisateur ?


userData est {id = 317, statut = rantocompletion, méthode = "{null}", résultat = ""}, l'utilisateur est null


Il vous a demandé quel est le type qui signifie quel type d'objet vous attendez à ces variables?


Ce que tous sont les détails de l'utilisateur que vous attendez, veuillez l'élaborer afin que d'autres puissent vous aider sur ce dont vous avez besoin exactement


ApplicationUtilisateur, ou quelques propriétés de celui-ci, comme le nom d'utilisateur, email


@Andrea Vous appelez des méthodes asynchronisées mais n'attendez jamais les résultats. Vous devez utiliser var userData = mushermanager.getuserasync (httpcontext.user);


Le attendre n'est qu'une partie du problème. L'autre partie est couverte par la duplication éventuelle.


3 Réponses :


0
votes

Pour moi, il semble que vous enregistriez l'utilisateur et essayez immédiatement d'accéder aux informations utilisateur. Le HTTPContext n'a pas eu la chance de mettre à jour et reflète toujours le temps lorsqu'il n'y avait aucun utilisateur connecté. Essayez de déplacer votre logique de récupération d'informations utilisateur sur "CreativeEpost" où il est exécuté sur le prochain aller-retour HTTP. xxx


2 commentaires

Si cela ne fonctionne pas, assurez-vous que votre système d'authentification fonctionne. Vous pouvez, par exemple, décorer l'action CreativeEpost () avec l'attribut [Autoriser]. Si votre utilisateur actuel peut exécuter l'action CreativeEpost (), vous devriez pouvoir accéder exactement aux données de l'utilisateur comme indiqué.


Merci pour votre réponse, cela m'a aidé, menthermanager.getasername (httpcontext.user); Après cela, j'utilise le nom d'utilisateur enregistré pour accéder à partir de la base de données



0
votes

Vous avez deux problèmes. Tout d'abord, getuserasync s'appuie sur le principal étant défini dans httpcontext , qui n'a pas encore eu lieu, de sorte que cette méthode échouera. Il doit y avoir une demande intervenante avant de pouvoir accéder à l'utilisateur de cette façon.

Ce que vous pouvez faire est de tirer directement l'utilisateur en utilisant quelque chose comme FindByIdasync , que vous essayez de faire déjà. Cependant, vous essayez de trouver l'utilisateur basé sur l'ID de l'instance utilisateur que vous avez essayé de récupérer via getuserasync . Depuis que cela a échoué, il n'y aura pas d'utilisateur et donc pas d'identifiant à utiliser dans cette recherche, ce qui l'oblige également. Il n'a même pas de sens de faire cela, comme si vous aviez déjà l'utilisateur d'obtenir l'identifiant, il n'y aurait pas de point à regarder cet utilisateur par son identifiant.

Alors, qu'est-ce que vous Beard à faire est de regarder l'utilisateur par des informations que vous do avez, qui basé sur votre code, est nom d'utilisateur . Par conséquent, faites: xxx


0 commentaires

0
votes

La raison en est que l'utilisateur sera disponible pour la demande suivante, vous ne pouvez pas obtenir l'utilisateur dans cette demande actuelle, sans parler du nom de l'utilisateur.


0 commentaires