Comment créer une fonction de fenêtre contextuelle dans vue pour déterminer la connexion de l'utilisateur

PHPz
Libérer: 2023-03-31 13:57:33
original
1261 Les gens l'ont consulté

Dans les applications Web modernes, l'authentification et l'autorisation des utilisateurs sont très importantes. Pour ce faire, de nombreuses applications doivent déterminer si l'utilisateur est connecté et le forcer à se connecter s'il ne l'est pas. Dans Vue.js, nous pouvons facilement y parvenir en utilisant ses méthodes de cycle de vie et ses gardes de navigation d'itinéraire. Cet article explique comment utiliser Vue.js pour créer une fenêtre contextuelle afin de déterminer la connexion de l'utilisateur.

Tout d'abord, nous devons définir un composant pop-up général qui affichera un message et permettra à l'utilisateur de fermer la fenêtre pop-up. Nous pouvons créer ce composant en utilisant la fonctionnalité de composant de Vue.js. Voici un exemple simple :

<template>
  <div class="modal" v-show="show">
    <div class="modal-content">
      <p>{{ message }}</p>
      <button v-on:click="close">Close</button>
    </div>
  </div>
</template>

<script>
  export default {
    props: {
      message: {
        type: String,
        default: 'Please log in to continue'
      },
      show: {
        type: Boolean,
        default: false
      }
    },
    methods: {
      close: function () {
        this.$emit('close');
      }
    }
  }
</script>

<style>
  .modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.6);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .modal-content {
    background-color: #fff;
    padding: 20px;
    border-radius: 5px;
    max-width: 400px;
    text-align: center;
  }
</style>
Copier après la connexion

Nous disposons désormais d'un composant contextuel universel qui peut être utilisé à n'importe quelle fin. Ensuite, nous devons vérifier l'état de connexion de l'utilisateur lorsqu'il tente d'accéder à une page nécessitant une connexion. Nous pouvons y parvenir en utilisant les gardes de navigation de Vue.js. Dans Vue.js, un garde-route est un ensemble de méthodes que nous pouvons exécuter avant, après ou pendant la navigation vers un itinéraire. Dans notre cas, nous utiliserons le garde de navigation "beforeEach", qui sera exécuté à chaque fois que l'utilisateur visite une nouvelle page.

Dans notre application Vue.js, nous pouvons définir des gardes de route dans le fichier router.js. Voici un exemple :

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Login from './views/Login.vue'
import AuthModal from './components/AuthModal.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    },
    {
      path: '/login',
      name: 'login',
      component: Login
    }
  ]
})

router.beforeEach((to, from, next) => {
  if (to.name !== 'login' && !isLoggedIn()) {
    const authModal = new Vue(AuthModal).$mount();
    authModal.$on('close', () => {
      authModal.$destroy();
    });
    Vue.nextTick(() => {
      document.body.appendChild(authModal.$el);
    })
  } else {
    next();
  }
})

function isLoggedIn() {
  // Check whether the user is logged in or not
}

export default router
Copier après la connexion

Dans cet exemple, nous définissons deux routes, l'une est la route du composant Home et l'autre est la route du composant Login. Nous avons défini une garde "beforeEach" pour toute la navigation de l'application qui vérifie l'état de connexion de l'utilisateur avant de naviguer vers une nouvelle page. Si l'utilisateur n'est pas connecté et que la page n'est pas une page de connexion, nous afficherons un composant contextuel sur l'écran pour inviter l'utilisateur à se connecter. Nous utilisons la fonction d'instanciation de Vue.js pour créer ce composant pop-up et le détruire lorsque l'utilisateur choisit de fermer la fenêtre pop-up. Enfin, nous vérifions si l'utilisateur est connecté et si c'est le cas, lui permettons de poursuivre la navigation.

Enfin, nous devons nous assurer qu'une fois que l'utilisateur s'est connecté avec succès, nous enregistrons son statut. Nous pouvons utiliser Vuex, la bibliothèque de gestion d'état de Vue.js, pour gérer l'état dans l'application. Voici un exemple :

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    isLoggedIn: false
  },
  mutations: {
    login(state) {
      state.isLoggedIn = true;
    },
    logout(state) {
      state.isLoggedIn = false;
    }
  },
  actions: {
    login({ commit }) {
      // Log the user in
      commit('login');
    },
    logout({ commit }) {
      // Log the user out
      commit('logout');
    }
  }
})

export default store
Copier après la connexion

Dans cet exemple, nous définissons un état (isLoggedIn), une mutation "login" pour marquer l'utilisateur comme connecté et une mutation "logout" pour déconnecter l'utilisateur. Nous définissons également des actions (connexion) et (déconnexion) pour gérer la logique d'authentification et de mise à jour du statut en arrière-plan.

Nous avons maintenant implémenté une fenêtre contextuelle de connexion utilisateur dans l'application Vue.js. Nous utilisons les méthodes de cycle de vie natives de Vue.js et les gardes de navigation d'itinéraire pour permettre aux utilisateurs de s'authentifier et d'autoriser facilement via différents composants Vue et états d'application.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal