Maison interface Web js tutoriel Comment charger le module de gestion des autorisations (tutoriel détaillé)

Comment charger le module de gestion des autorisations (tutoriel détaillé)

Jun 11, 2018 pm 05:36 PM
vue组件 Module de gestion des droits

Cet article explique en détail comment charger dynamiquement les composants VUE dans le module de gestion des autorisations. Les amis qui ont des besoins à cet égard peuvent suivre et apprendre.

Dans cet article nous parlerons principalement de connexion et de chargement dynamique des composants.

Enregistrer le statut de connexion

Lorsqu'un utilisateur se connecte avec succès, les informations de connexion de l'utilisateur actuel doivent être enregistrées localement pour une utilisation ultérieure. L'implémentation spécifique est la suivante :

La connexion réussie enregistre les données

Une fois l'opération de connexion exécutée avec succès, les données sont soumises au magasin via l'opération de validation. Le code principal est le suivant :

this.postRequest('/login', {
  username: this.loginForm.username,
  password: this.loginForm.password
}).then(resp=> {
  if (resp && resp.status == 200) {
  var data = resp.data;
  _this.$store.commit('login', data.msg);
  var path = _this.$route.query.redirect;
  _this.$router.replace({path: path == '/' || path == undefined ? '/home' : path});
  }
});
Copier après la connexion

magasin

Le code principal du magasin est le suivant :

export default new Vuex.Store({
 state: {
  user: {
   name: window.localStorage.getItem('user' || '[]') == null ? '未登录' : JSON.parse(window.localStorage.getItem('user' || '[]')).name,
   userface: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).userface
  }
 },
 mutations: {
  login(state, user){
   state.user = user;
   window.localStorage.setItem('user', JSON.stringify(user));
  },
  logout(state){
   window.localStorage.removeItem('user');
  }
 }
});
Copier après la connexion

Afin de Réduisez les problèmes, les données une fois que l'utilisateur s'est connecté avec succès seront enregistrées dans localStorage (pour éviter la perte de données après que l'utilisateur a appuyé sur F5 pour actualiser), elles sont stockées sous la forme d'une chaîne, puis converties en json une fois récupérées. Lorsque l'utilisateur se déconnecte, effacez les données dans localStorage.

Chargement dynamique des composants

Dans le module de gestion des autorisations, c'est le cœur du front-end.

Idée de base

Une fois que l'utilisateur s'est connecté avec succès, avant d'accéder à la page d'accueil, l'utilisateur envoie une demande au serveur pour obtenir les informations actuelles du menu et les informations sur les composants. . Le serveur renverra une chaîne json au format suivant :

[
  {
    "id": 2,
    "path": "/home",
    "component": "Home",
    "name": "员工资料",
    "iconCls": "fa fa-user-circle-o",
    "children": [
      {
        "id": null,
        "path": "/emp/basic",
        "component": "EmpBasic",
        "name": "基本资料",
        "iconCls": null,
        "children": [],
        "meta": {
          "keepAlive": false,
          "requireAuth": true
        }
      },
      {
        "id": null,
        "path": "/emp/adv",
        "component": "EmpAdv",
        "name": "高级资料",
        "iconCls": null,
        "children": [],
        "meta": {
          "keepAlive": false,
          "requireAuth": true
        }
      }
    ],
    "meta": {
      "keepAlive": false,
      "requireAuth": true
    }
  }
]
Copier après la connexion

Après avoir obtenu cette chaîne, le front-end fait deux choses : 1. Convertir json Ajout dynamique à l'itinéraire actuel ; 2. Enregistrez les données dans le magasin, puis chaque page affiche le menu en fonction des données du magasin.

L'idée de base n'est pas difficile. Jetons un coup d'œil aux étapes de mise en œuvre.

Délai de demande de données

Ceci est très important.

Certains amis peuvent demander pourquoi c'est si difficile. Puis-je simplement le demander après m'être connecté avec succès ? Oui, il est possible de demander des ressources de menu après une connexion réussie. Une fois la demande reçue, nous la sauvegarderons dans le magasin pour une prochaine utilisation, mais il y aura un autre problème si l'utilisateur clique avec succès sur un certain sous-enfant. connexion, Page, entrez dans la sous-page, puis appuyez sur F5 pour actualiser. À ce moment-là, il s'agit de GG, car les données du magasin ont disparu après l'actualisation de F5, et nous n'avons demandé les ressources du menu qu'une seule fois lors de la connexion. est réussi. Il y a deux idées pour résoudre ce problème : 1. Ne pas enregistrer les ressources du menu dans le magasin, mais les enregistrer dans localStorage, afin que les données soient toujours là même après l'actualisation F5. 2. Directement dans la méthode montée ; de chaque page, allez Charger les ressources du menu une fois.

Les ressources du menu étant très sensibles, il est préférable de ne pas les enregistrer localement, donc l'option 1 est abandonnée. Cependant, l'option 2 est un peu lourde en charge de travail, j'ai donc pris une mesure pour la simplifier. le garde de navigation en routage.

Garde de navigation d'itinéraire

Mon implémentation spécifique est la suivante. Tout d'abord, créez un tableau de routes dans le magasin, qui est un tableau vide, puis activez le garde d'itinéraire global, comme suit :

router.beforeEach((to, from, next)=> {
  if (to.name == 'Login') {
   next();
   return;
  }
  var name = store.state.user.name;
  if (name == '未登录') {
   if (to.meta.requireAuth || to.name == null) {
    next({path: '/', query: {redirect: to.path}})
   } else {
    next();
   }
  } else {
   initMenu(router, store);
   next();
  }
 }
)
Copier après la connexion

Le code ici est très court, laissez-moi vous donner une explication simple :

1 Si la page à laquelle vous souhaitez accéder est la page de connexion, il n'y a rien à dire à ce sujet. , allez-y directement.

2. S'il ne s'agit pas d'une page de connexion, j'obtiens d'abord l'état de connexion actuel du magasin. Si je ne suis pas connecté, utilisez l'attribut requireAuth de l'attribut méta dans l'itinéraire pour déterminer si la page que je veux. pour y accéder, il faut se connecter. Si tel est le cas, revenez à la page de connexion et transmettez en même temps le chemin de la page à laquelle vous souhaitez accéder en tant que paramètre à la page de connexion, afin de pouvoir accéder à la cible. page après une connexion réussie. Si vous n'avez pas besoin de vous connecter, allez directement (en fait, il n'y a que la page de connexion dans ce projet Aucune connexion requise) ; si vous êtes déjà connecté, initialisez d'abord le menu puis sautez.

Le fonctionnement du menu d'initialisation est le suivant :

export const initMenu = (router, store)=> {
 if (store.state.routes.length > 0) {
  return;
 }
 getRequest("/config/sysmenu").then(resp=> {
  if (resp && resp.status == 200) {
   var fmtRoutes = formatRoutes(resp.data);
   router.addRoutes(fmtRoutes);
   store.commit('initMenu', fmtRoutes);
  }
 })
}
export const formatRoutes = (routes)=> {
 let fmRoutes = [];
 routes.forEach(router=> {
  let {
   path,
   component,
   name,
   meta,
   iconCls,
   children
  } = router;
  if (children && children instanceof Array) {
   children = formatRoutes(children);
  }
  let fmRouter = {
   path: path,
   component(resolve){
    if (component.startsWith("Home")) {
     require(['../components/' + component + '.vue'], resolve)
    } else if (component.startsWith("Emp")) {
     require(['../components/emp/' + component + '.vue'], resolve)
    } else if (component.startsWith("Per")) {
     require(['../components/personnel/' + component + '.vue'], resolve)
    } else if (component.startsWith("Sal")) {
     require(['../components/salary/' + component + '.vue'], resolve)
    } else if (component.startsWith("Sta")) {
     require(['../components/statistics/' + component + '.vue'], resolve)
    } else if (component.startsWith("Sys")) {
     require(['../components/system/' + component + '.vue'], resolve)
    }
   },
   name: name,
   iconCls: iconCls,
   meta: meta,
   children: children
  };
  fmRoutes.push(fmRouter);
 })
 return fmRoutes;
}
Copier après la connexion

Dans le menu d'initialisation, déterminez d'abord si la donnée dans la boutique existe. Si elle existe, cela signifie que ce saut est. un saut normal, et il n'est pas saisi par l'utilisateur en appuyant sur F5 ou en saisissant directement une adresse dans la barre d'adresse. Sinon allez dans le menu de chargement. Après avoir obtenu le menu, utilisez d'abord la méthode formatRoutes pour convertir le json renvoyé par le serveur dans le format requis par le routeur. Ici, nous convertissons principalement le composant, car le composant renvoyé par le serveur est une chaîne, mais ce qui est nécessaire dans le routeur. est un composant, nous chargeons donc simplement les composants requis dynamiquement dans la méthode formatRoutes. Une fois le format des données préparé avec succès, d'une part, les données sont stockées dans le magasin et, d'autre part, la méthode addRoutes dans le routage est utilisée pour les ajouter dynamiquement au routage.

Rendu du menu

Enfin, sur la page d'accueil, récupérez le menu json depuis le magasin et restituez-le dans un menu. Le code correspondant peut être consulté dans Accueil. vue. Pas besoin d'entrer dans les détails.

OK, après cela, différents utilisateurs peuvent voir différents menus après s'être connectés avec succès.

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Comment obtenir la valeur dans select dans vue.js (tutoriel détaillé)

dans Vue2.0 Comment utiliser des filtres en série ?

Comment revenir en haut via la méthode tween dans le projet vue

Comment utiliser vue pour déterminer que le contenu d'entrée est constitué uniquement d'espaces ?

Comment utiliser js pour déterminer que la zone de saisie ne peut pas être un espace ou une valeur nulle ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Communication des composants Vue : utilisez $destroy pour la communication de destruction de composants Communication des composants Vue : utilisez $destroy pour la communication de destruction de composants Jul 09, 2023 pm 07:52 PM

Communication entre composants Vue : utilisez $destroy pour la communication de destruction de composants Dans le développement de Vue, la communication entre composants est un aspect très important. Vue propose diverses façons d'implémenter la communication entre les composants, tels que les accessoires, l'émission, la vuex, etc. Cet article présentera une autre méthode de communication entre composants : utiliser $destroy pour la communication de destruction de composants. Dans Vue, chaque composant a un cycle de vie, qui comprend une série de fonctions hook de cycle de vie. La destruction de composants en fait également partie. Vue fournit un $de.

Comment Vue implémente-t-il la réutilisation et l'extension des composants ? Comment Vue implémente-t-il la réutilisation et l'extension des composants ? Jun 27, 2023 am 10:22 AM

Avec le développement continu de la technologie front-end, Vue est devenu l'un des frameworks les plus populaires en matière de développement front-end. Dans Vue, les composants sont l'un des concepts de base, qui peuvent diviser les pages en parties plus petites et plus faciles à gérer, améliorant ainsi l'efficacité du développement et la réutilisabilité du code. Cet article se concentrera sur la façon dont Vue implémente la réutilisation et l'extension des composants. 1. Mixins de réutilisation des composants Vue Les mixins sont un moyen de partager les options de composants dans Vue. Les mixins permettent de combiner les options de composants de plusieurs composants en un seul objet pour un maximum

Pratique Vue : développement de composants de sélecteur de date Pratique Vue : développement de composants de sélecteur de date Nov 24, 2023 am 09:03 AM

Vue Practical Combat : Développement de composants de sélecteur de dates Introduction : Le sélecteur de dates est un composant souvent utilisé dans le développement quotidien. Il peut facilement sélectionner des dates et fournit diverses options de configuration. Cet article expliquera comment utiliser le framework Vue pour développer un composant de sélecteur de date simple et fournira des exemples de code spécifiques. 1. Analyse des besoins Avant de commencer le développement, nous devons effectuer une analyse des besoins pour clarifier les fonctions et les caractéristiques des composants. Selon les fonctions communes des composants du sélecteur de date, nous devons implémenter les points de fonction suivants : Fonctions de base : capables de sélectionner des dates et

Communication des composants Vue : utilisation de la montre et calcul pour la surveillance des données Communication des composants Vue : utilisation de la montre et calcul pour la surveillance des données Jul 10, 2023 am 09:21 AM

Communication des composants Vue : utilisation de la surveillance et du calcul pour la surveillance des données Vue.js est un framework JavaScript populaire, et son idée principale est la composantisation. Dans une application Vue, les données doivent être transférées et communiquées entre différents composants. Dans cet article, nous présenterons comment utiliser la montre et le calcul de Vue pour surveiller et répondre aux données. watch Dans Vue, watch est une option qui peut être utilisée pour surveiller les modifications dans une ou plusieurs propriétés.

Comment utiliser des bibliothèques tierces dans les projets Vue Comment utiliser des bibliothèques tierces dans les projets Vue Oct 15, 2023 pm 04:10 PM

Vue est un framework JavaScript populaire qui fournit une multitude d'outils et de fonctionnalités pour nous aider à créer des applications Web modernes. Bien que Vue elle-même fournisse déjà de nombreuses fonctions pratiques, nous pouvons parfois avoir besoin d'utiliser des bibliothèques tierces pour étendre les capacités de Vue. Cet article expliquera comment utiliser des bibliothèques tierces dans les projets Vue et fournira des exemples de code spécifiques. 1. Introduire des bibliothèques tierces La première étape pour utiliser des bibliothèques tierces dans un projet Vue est de les introduire. Nous pouvons le présenter des manières suivantes

Compréhension approfondie du cycle de vie des composants de Vue Compréhension approfondie du cycle de vie des composants de Vue Oct 15, 2023 am 09:07 AM

Pour comprendre en profondeur le cycle de vie des composants de Vue, vous avez besoin d'exemples de code spécifiques Introduction : Vue.js est un framework JavaScript progressif privilégié par les développeurs pour sa simplicité, sa facilité d'apprentissage, son efficacité et sa flexibilité. Dans le développement de composants de Vue, la compréhension du cycle de vie des composants est un élément important. Cet article approfondira le cycle de vie des composants Vue et fournira des exemples de code spécifiques pour aider les lecteurs à mieux les comprendre et les appliquer. 1. Diagramme du cycle de vie des composants Vue Le cycle de vie des composants Vue peut être considéré comme un composant

Développement de composants Vue : méthode d'implémentation du composant de page à onglet Développement de composants Vue : méthode d'implémentation du composant de page à onglet Nov 24, 2023 am 08:41 AM

Développement de composants Vue : méthode d'implémentation du composant Tab Dans les applications Web modernes, la page à onglet (Tab) est un composant d'interface utilisateur largement utilisé. Le composant Tab peut afficher plusieurs contenus associés sur une seule page et les changer en cliquant sur l'onglet. Dans cet article, nous présenterons comment utiliser Vue.js pour implémenter un composant d'onglet simple et fournirons des exemples de code détaillés. La structure du composant onglet Vue Le composant onglet se compose généralement de deux parties : Onglet et Panneau. Les étiquettes sont utilisées pour identifier les surfaces

Notes de développement de Vue : Comment gérer des structures de données et des algorithmes complexes Notes de développement de Vue : Comment gérer des structures de données et des algorithmes complexes Nov 22, 2023 am 08:08 AM

Dans le développement de Vue, nous rencontrons souvent des situations dans lesquelles nous traitons de structures de données et d'algorithmes complexes. Ces problèmes peuvent impliquer un grand nombre d'opérations de données, la synchronisation des données, l'optimisation des performances, etc. Cet article présentera quelques considérations et techniques pour gérer des structures de données et des algorithmes complexes afin d'aider les développeurs à mieux relever ces défis. 1. Sélection des structures de données Lorsqu'il s'agit de structures de données et d'algorithmes complexes, il est très important de choisir des structures de données appropriées. Vue fournit une multitude de structures et de méthodes de données, et les développeurs peuvent choisir la structure de données appropriée en fonction des besoins réels. numéros couramment utilisés

See all articles