0
votes

ASP.NET CORET IDENTITY MVC - Comment obtenir actuellement l'utilisateur enregistré en vue?

Ceci est ma vue userindex.cshtml pour une page qui répertorie tous les messages appartenant à l'utilisateur actuellement connecté. XXX

apparemment, il existe une erreur dans la ligne avec le @if (@ usermanager.getasername (utilisateur) == item.user.username) : NullReferenceException: référence d'objet non définie sur une instance d'un objet. Je n'ai aucune idée de la raison pour laquelle j'ai cette erreur parce que tout a fonctionné depuis un moment (il figurait dans la table des messages uniquement par l'utilisateur connecté), puis je travaillais à une autre vue et quand je suis revenu à cette page, il y avait une erreur. J'ai même essayé avec ce @if (@ user.identity.name == item.user.user.ame) Mais il y a toujours une erreur. J'élais même tous les changements que j'ai faits avant l'erreur et cela ne fonctionne toujours pas. Voici aussi ici mon contrôleur s'il aide: xxx

est un moyen de filtrer les messages par l'utilisateur actuellement connecté dans le contrôleur, puis envoyant ces publications à la vue, à la place. Filtrer tous les messages dans la vue, si cela ne fonctionne toujours pas?

**** Mise à jour ****

Il s'avère que le problème n'était pas @ Usermanager.getaSername (utilisateur) mais le item.user.user.user. / code> car l'élément postal n'avait pas d'utilisateur. Ça fonctionne maintenant. De plus, si quelqu'un a des problèmes similaires, j'ai trouvé qu'il est préférable de filtrer des messages dans le contrôleur qui ressemble maintenant à ce xxx

merci à tout le monde pour les suggestions et l'aide.


0 commentaires

3 Réponses :


0
votes

meilleur que vous puissiez faire est d'enregistrer l'ID utilisateur comme champ pour les messages. Ensuite, vous obtenez cet ID utilisateur à partir du jeton / revendications comme mentionné par Ali Kianoor à partir du serveur d'identité et vous pouvez filtrer les messages basés sur l'ID utilisateur.

O et assurez-vous de le faire dans la logique / contrôleur d'entreprise et non à votre vue. Vous avez besoin d'une séparation claire de la préoccupation entre le modèle de la vue et du contrôleur en MVC.

En savoir plus sur SOC ici


0 commentaires

0
votes

Cela se produit si votre session a expiré et que vous devez vous reconnecter.

Un meilleur moyen de refacteur serait de faire le filtre utilisateur sur votre contrôleur de backend. Prenez l'utilisateur de la session dans votre contrôleur et ajoutez un instruction dans votre création APROJECTCONTEXT. Comment obtenir l'utilisateur actuel dans ASP.NET CORE


0 commentaires

0
votes

Essayez celui-ci pour obtenir UserID:

string userId = User.Claims.First(c => c.Type == "UserID").Value;


0 commentaires