Vue implementiert Benutzeranmeldung und Token-Verifizierung

Vue implementiert Benutzeranmeldung und Token-Verifizierung

Im Falle einer vollständigen Trennung von Front-End und Back-End lautet die allgemeine Idee zur Implementierung der Token-Verifizierung im Vue-Projekt wie folgt:

1. Beim ersten Anmelden ruft das Front-End die Back-End-Anmeldeoberfläche auf und sendet den Benutzernamen und das Kennwort

2. Das Backend empfängt die Anfrage, überprüft den Benutzernamen und das Passwort und gibt bei erfolgreicher Überprüfung ein Token an das Frontend zurück.

3. Das Frontend erhält das Token, speichert es in localStorage und vuex und springt zur Routing-Seite

4. Jedes Mal, wenn das Front-End zu einer Route springt, ermittelt es, ob im localStorage ein Token vorhanden ist. Wenn nicht, springt es zur Anmeldeseite. Wenn ja, springt es zur entsprechenden Routenseite.

5. Bei jedem Aufruf der Backend-Schnittstelle müssen Sie dem Anforderungsheader ein Token hinzufügen

6. Das Backend prüft, ob sich im Anforderungsheader ein Token befindet. Wenn ein Token vorhanden ist, ruft es das Token ab und überprüft es. Wenn die Überprüfung erfolgreich ist, gibt es Daten zurück. Wenn die Überprüfung fehlschlägt (z. B. wenn das Token abläuft), gibt es 401 zurück. Wenn sich im Anforderungsheader kein Token befindet, gibt es ebenfalls 401 zurück.

7. Wenn der vom Frontend empfangene Statuscode 401 lautet, löschen Sie die Token-Informationen und springen Sie zur Anmeldeseite

vue-cli erstellt ein Projekt und erklärt kurz, was das Frontend tun muss:

1. Die Anmeldeschnittstelle wird erfolgreich aufgerufen und das Token wird in der Rückruffunktion in localStorage und vuex gespeichert

anmelden.vue

<Vorlage>
  <div>
    <input type="text" v-model="loginForm.username" placeholder="Benutzername"/>
    <input type="text" v-model="loginForm.password" placeholder="passwort"/>
    <button @click="login">Anmelden</button>
  </div>
</Vorlage>
 
<Skript>
importiere { mapMutations } von 'vuex';
Standard exportieren {
  Daten () {
    zurückkehren {
      Anmeldeformular: {
        Benutzername: '',
        Passwort: ''
      },
      BenutzerToken: ''
    };
  },
 
  Methoden: {
    ...mapMutations(['changeLogin']),
    anmelden() {
      lass _this = dies;
      wenn (this.loginForm.username === '' || this.loginForm.password === '') {
        alert('Konto oder Passwort dürfen nicht leer sein');
      } anders {
        dies.axios({
          Methode: 'post',
          URL: '/Benutzer/Anmelden',
          Daten: _this.loginForm
        }).dann(res => {
          Konsole.log(Res.Daten);
          _this.userToken = 'Träger ' + res.data.data.body.token;
          // Benutzertoken in vuex_this.changeLogin speichern ({ Authorization: _this.userToken });
          _this.$router.push('/home');
          alert('Anmeldung erfolgreich');
        }).fangen(Fehler => {
          alert('Konto- oder Passwortfehler');
          konsole.log(Fehler);
        });
      }
    }
  }
};
</Skript> 

index.js im Store-Ordner

importiere Vue von „vue“;
importiere Vuex von „vuex“;
Vue.use(Vuex);
 
const store = neuer Vuex.Store({
 
  Zustand: {
    //Token speichern
    Autorisierung: localStorage.getItem('Autorisierung') ? localStorage.getItem('Autorisierung') : ''
  },
 
  Mutationen:
    // Ändern Sie das Token und speichern Sie es im localStorage
    changeLogin (Status, Benutzer) {
      Status.Autorisierung = Benutzer.Autorisierung;
      localStorage.setItem('Autorisierung', Benutzer.Autorisierung);
    }
  }
});
 
Standardspeicher exportieren;

2. Routing-Navigationswächter

index.js im Router-Ordner

importiere Vue von „vue“;
Router von „vue-router“ importieren;
Login aus „@/components/login“ importieren;
importiere Home von „@/components/home“;
 
Vue.use(Router);
 
const router = neuer Router({
  Routen: [
    {
      Weg: '/',
      Umleitung: '/login'
    },
    {
      Pfad: '/login',
      Name: 'Anmelden',
      Komponente: Login
    },
    {
      Pfad: '/home',
      Name: 'Heimat',
      Komponente: Home
    }
  ]
});
 
// Navigationswächter // Verwenden Sie router.beforeEach, um einen globalen Frontwächter zu registrieren, der ermittelt, ob der Benutzer angemeldet ist router.beforeEach((to, from, next) => {
  wenn (zu.Pfad === '/login') {
    nächste();
  } anders {
    let token = localStorage.getItem('Autorisierung');
 
    wenn (Token === null || Token === '') {
      weiter('/login');
    } anders {
      nächste();
    }
  }
});
 
Standardrouter exportieren;

3. Token zum Anforderungsheader hinzufügen

// Fügen Sie einen Anforderungs-Interceptor hinzu und fügen Sie dem Anforderungsheader ein Token hinzu
axios.interceptors.request.use(
  Konfiguration => {
    wenn (localStorage.getItem('Autorisierung')) {
      config.headers.Authorization = localStorage.getItem('Authorization');
    }
 
    Konfiguration zurückgeben;
  },
  Fehler => {
    returniere Promise.reject(Fehler);
});

4. Wenn der Statuscode 401 lautet, löschen Sie die Token-Informationen und springen Sie zur Anmeldeseite

localStorage.removeItem('Autorisierung');
dies.$router.push('/login');

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • VUE implementiert Token-Anmeldeüberprüfung
  • Vue implementiert einen Login-Verifizierungscode
  • Implementierungscode für die gleitende Vue-Anmeldungsüberprüfung
  • Verwenden Sie beforeEach von vue-route, um die Funktion „Navigation Guard“ (Anmeldung vor Routensprung überprüfen) zu implementieren.
  • Vue tatsächlicher Implementierungscode zur Vue-Anmeldeüberprüfung im Kampf
  • Implementierungscode für die Vue-Anmelderegistrierung und Token-Verifizierung
  • So implementieren Sie den Anmeldestatus zur Verifizierung in Vue
  • Vue Router + Vuex implementiert eine Login-Verifizierungslogik für die Homepage
  • Ein Beispiel für die Verwendung des Routing-Hooks durch Vue, um nach Ablauf des Tokens zur Anmeldeseite zu springen
  • Anmeldung zur Token-Verifizierung im Vue-Projekt (Front-End-Teil)

<<:  Tutorial zur Installation von Ubuntu 20.04 und NVIDIA-Treibern

>>:  MySQL-Tabellenübergreifende Abfrage und Tabellenübergreifende Aktualisierung

Artikel empfehlen

So betten Sie mithilfe von Iframe andere Webseiten in eine Webseite ein

So verwenden Sie Iframe: Code kopieren Der Code l...

Implementierungsmethode des Nginx+Tomcat-Lastausgleichsclusters

Die experimentelle Umgebung ist wie folgt Hier mü...

Erweiterte Erklärung der Javascript-Funktionen

Inhaltsverzeichnis Funktionsdefinitionsmethode Fu...

JavaScript-Canvas zum Erzielen eines Regentropfeneffekts

In diesem Artikelbeispiel wird der spezifische Co...

Erfahrung im Webdesign

<br />Der Autor war früher ein Anfänger im W...

So optimieren Sie die MySQL-Abfragegeschwindigkeit

In den vorherigen Kapiteln haben wir die Auswahl ...

Lösung zum Vergessen des Passworts des Pagodenpanels in Linux 3.X/4.x/5.x

Geben Sie ssh ein und geben Sie den folgenden Bef...

Nginx-Lastausgleichsalgorithmus und Failover-Analyse

Überblick Der Lastenausgleich von Nginx bietet Up...

Detaillierter Prozess der SpringBoot-Integration von Docker

Inhaltsverzeichnis 1. Demo-Projekt 1.1 Schnittste...

Detaillierte Erläuterung der asynchronen Axios-Kommunikation in Vue

1. Zuerst erstellen wir eine JSON-Datei zur inter...

Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints

Inhaltsverzeichnis Vorwort Einschränkungen prüfen...

Docker-Installation von MySQL (8 und 5.7)

In diesem Artikel wird die Verwendung von Docker ...