Ceci est ma vue userindex.cshtml pour une page qui répertorie tous les messages appartenant à l'utilisateur actuellement connecté. apparemment, il existe une erreur dans la ligne avec le 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? p> **** Mise à jour **** P> Il s'avère que le problème n'était pas merci à tout le monde pour les suggestions et l'aide. P> p> @if (@ usermanager.getasername (utilisateur) == item.user.username) code>: 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) code> 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: p>
@ Usermanager.getaSername (utilisateur) code> 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 p>
3 Réponses :
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. P>
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. P>
En savoir plus sur SOC ici p>
Cela se produit si votre session a expiré et que vous devez vous reconnecter. P>
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 p>
Essayez celui-ci pour obtenir UserID:
string userId = User.Claims.First(c => c.Type == "UserID").Value;