0
votes

rôle du non-objet lors de la redirection du rôle

J'ai essayé de vous connecter à plusieurs rôles, Lorsqu'un utilisateur est admin fort>, redirige vers la page d'administration, Lorsqu'un utilisateur est invité fort>, rediriger vers la page d'invité,

Ceci est mon contrôleur, p> xxx pré>

mais une erreur comme celle-ci: P>

Trying to get property 'role' of non-object,


2 commentaires

Quel est le paquet que vous devez utiliser pour la gestion des rôles et des autorisations?


Quelle version de Laravel utilisez-vous?


3 Réponses :


0
votes

Veuillez créer une relation auparavant avec un modèle particulier.

Modèle utilisateur strong> Code: p> xxx pré>

Vous pouvez appeler un rôle comme: p >

Auth::user()->userRole;


0 commentaires

0
votes

Cette erreur essayer d'obtenir le «rôle» de la propriété de non-objet dit que le rôle de la propriété tente d'accéder à un non-objet. Cela signifie que l'utilisateur auth :: user () n'est pas un objet.

Ceci s'est produit dans le cas du rôle invité. Si vous êtes connecté, alors Auth :: Utilisateur () est défini et disponible en tant qu'objet. Mais si vous n'êtes pas connecté et que vous accédez à la page sans connexion, vous n'aurez aucune donnée dans Auth :: Utilisateur () .

solution à ce problème est que vous Vérifiez si l'objet existe avec le contrôle admin . Quelque chose comme ça - xxx

ma version préférée de ce code - xxx

Vous pouvez voir que j'ai remplacé authentifié :: Utilisateur () avec auth () -> utilisateur () . Je trouve mieux que d'utiliser la façade mais c'est à vous de décider. Juste une pointe supplémentaire de mon côté.


0 commentaires

0
votes

auth :: user () code> retournera une instance de l'utilisateur connecté, cependant, si l'utilisateur n'est pas connecté, cela retournera null code>.

Si vous êtes sûr que vos utilisateurs disposeront toujours d'une propriété CODE> ROLE CODE> sur eux, vous pouvez utiliser le check () Méthode: p>

if (optional(Auth::user())->role == 'admin') {
    echo 'admin';
}


0 commentaires