Le navigateur ne répond plus lors de l'utilisation de beforeEach
P粉724256860
P粉724256860 2024-03-19 22:53:00
0
1
308

J'essaie de configurer des itinéraires dans mon application auxquels les utilisateurs peuvent et ne peuvent pas accéder, mais parfois mon navigateur se bloque et ne me donne aucun message d'erreur, donc je ne sais pas ce que je fais de mal.

Dans le premier SI, je vérifie si l'itinéraire nécessite une authentification pour y accéder, vrai et si faux, j'envoie l'utilisateur vers la page de connexion. Je vérifie ensuite dans quel groupe se trouve l'utilisateur et si cela échoue, je le redirige vers la page racine "/". Si aucune de ces instructions IF n'est vraie, je redirige simplement vers la page vers laquelle l'utilisateur souhaite accéder.

router.beforeEach((to, from, next) => {

      const isAuth = localStorage.getItem("auth");
      const userGroupRaw = localStorage.getItem("userData");
      const accessGroup = to.meta.group;
      let userGroup;
      if (userGroupRaw) {
        userGroup = JSON.parse(userGroupRaw).id_access;
      }
    
      if (to.matched.some((record) => record.meta.requiresAuth)) {
        console.log("if1");
        if (isAuth === "false") {
          next({ path: "/login" });
        }
        if (
          (accessGroup === 1 && (userGroup === 3 || userGroup === 4)) ||
          !userGroup
        ) {
          next({ path: "/" });
        }
    
        next();
      }
    
      next();
    });
    export default router;

P粉724256860
P粉724256860

répondre à tous(1)
P粉409742142

Comme vous n'avez pas utilisé d'instruction "else", vous avez appelé next() plusieurs fois et vous êtes resté coincé dans une boucle infinie (comme mentionné dans les commentaires).

Vous pouvez utiliser return pour arrêter le code à ce stade.

router.beforeEach((to, from, next) => {

  const isAuth = localStorage.getItem("auth");
  const userGroupRaw = localStorage.getItem("userData");
  const accessGroup = to.meta.group;
  let userGroup;
  if (userGroupRaw) {
    userGroup = JSON.parse(userGroupRaw).id_access;
  }

  if (to.matched.some((record) => record.meta.requiresAuth)) {
    if (isAuth === "false") {
        return next({
            path: "/login"
        }); 
    }
    if (
        (accessGroup === 1 && (userGroup === 3 || userGroup === 4)) ||
        !userGroup
    ) {
        return next({
            path: "/"
        });
    }
    // next(); - this is not needed as the preceding next always gets called.
  }
  next();
})

export default router;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!