VUE implementiert Token-Anmeldeüberprüfung

VUE implementiert Token-Anmeldeüberprüfung

In diesem Artikelbeispiel wird der spezifische Code von VUE zur Implementierung der Token-Anmeldeüberprüfung zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Der Prozess der Implementierung dieser Anmeldefunktion war voller Wendungen. Mittendrin tauchte ein Fehler auf und es dauerte zwei oder drei Tage, bis das Problem gelöst war. Ich war erschöpft und überfordert. Ich hatte das Gefühl, dass meine Ausdauer und Geduld auf ein neues Niveau gehoben worden waren.

Glücklicherweise konnte ich den Fehler mithilfe meiner Klassenkameraden endlich beheben, aber ich fühlte mich wieder einmal oberflächlich, weil ich ein Anfänger bin. Die Fragen der Großen berührten immer wieder meine Wissenslücken ... Jetzt werde ich die Schritte zur Implementierung der Token-Anmeldeüberprüfung detailliert aufzeichnen, um Fehler in Zukunft zu vermeiden.

1. Kapseln Sie die Betriebsmethode des Stores auf dem Token

Erstellen Sie zunächst einen Store-Ordner im src-Verzeichnis und dann eine main.js-Datei

Der in main.js gespeicherte Code wird verwendet, um den Token-Wert abzurufen und den Wert des lokalen Tokens mithilfe von localStorage zu speichern und zu löschen.

importiere Vue von „vue“;
importiere Vuex von „vuex“;
 
Vue.use(Vuex);
 
exportiere standardmäßig neuen Vuex.Store({
  Zustand: {
    Token: localStorage.getItem('Token') ? localStorage.getItem('Token') : ''
  },
  Mutationen:
    setToken (Status, Token) {
      Zustand.Token = Token;
      localStorage.setItem("token",token.token); //Token speichern
    },
    delToken(Status) {
      Zustand.Token = '';
      localStorage.removeItem("token"); //Token löschen
    }
  }
})

2. Melden Sie sich zur Überprüfung über die Anmeldeoberfläche auf der Seite an

Einloggen

(1) Code des Eingabefeldes

<input type="text" v-model="username" placeholder="Benutzername" />
<input type="Passwort" v-model="Passwort" placeholder="Passwort"/>

(2) Skriptcode

<Skript>
  importiere { mapMutations } von 'vuex';
  Standard exportieren {
    Name: "managerLogin",
    Daten() {
      zurückkehren {
        Benutzername:'', //BenutzernamePasswort:'', //Passwort};
    },
    Methoden:{
      ...mapMutations(['setToken']),
      login:funktion() {
        wenn (dieser.Benutzername === '' || dieses.Passwort === '') {
          alert("Konto oder Passwort dürfen nicht leer sein!");
        }
        anders {
          // Gemäß der API-Schnittstelle, um das Token zu erhalten
          dies.$ajax.get('http:///api/wx/Public/login', {
            params: { //Eingehende Parameter Benutzername: dieser.Benutzername, Passwort: dieses.Passwort, Gerätetyp: "mobile"
            }
          }).Dann(
            res => {
              Konsole.log(Res.Daten);
              if(res.data.code===1) { //Wenn Code=1, war die Überprüfung erfolgreich this.setToken({token: res.data.data.token}); //Methode zum Zuweisen eines Tokens im Store this.$router.push('/managerHome');
              }
              anders{
                alert(res.data.msg); //Popup-Fehlermeldung}
            }).fangen(Fehler => {
            alert('Schnittstellenverbindungsfehler');
            konsole.log(Fehler);
          });
 
        }
      }
  }
</Skript>

Aus Konto abmelden

<Skript>
    importiere {mapMutations} von „vuex“;
    Standard exportieren {
      Name: "manager_infor",
      Methoden:{
        ...mapMutations(['delToken']),
        Ausfahrt:Funktion(){
          dies.delToken({token:''});
          dies.$router.push('/managerLogin');
        }
      }
    }
</Skript>

3. Routing-Wächter

Dieser Code wird in der Routing-Datei abgelegt. Seine Funktion besteht darin, den lokal gespeicherten Token-Wert zur Anmeldeüberprüfung zu überprüfen, bevor die Seite springt, um festzustellen, ob gesprungen werden soll

router.beforeEach((bis, von, weiter) => {
  if (to.path === '/managerLogin') { //Wenn die Seite, zu der gesprungen werden soll, die Anmeldeoberfläche ist next(); //direkt springen}
  else if (to.path === '/managerHome'){ //Wenn die Seite, zu der gesprungen werden soll, die persönliche Schnittstelle ist let token = localStorage.getItem('token'); //Den lokal gespeicherten Token-Wert abrufen if (token===null||token===''){ //Wenn das Token leer ist, schlägt die Überprüfung fehl und es wird zur Anmeldeseite gesprungen next('/managerLogin');
    }
    else{ //Wenn es nicht leer ist, war die Überprüfung erfolgreich next();
    }
  }
  anders{
    nächste();
  }
});
 
Standardrouter exportieren;

4. Axios-Anforderungsabfangjäger

Dieser Code wird in der Datei main.js unter der Datei src abgelegt.

importiere Axios von „Axios“;
Store aus „./store/main“ importieren;
Vue.prototype.$ajax = axios
 
neuer Vue({
  el: '#app',
  Router,
  store, //Store muss Komponenten hinzufügen: { App },
  Vorlage: '<App/>'
})
 
//Abfangjäger anfordern axios.interceptors.request.use(config => {
//Überprüfen Sie, ob ein Token vorhanden ist. Wenn ja, fügen Sie das Token dem Header jeder Seite hinzu.
  wenn (store.state.token) {
    
    config.headers.common['XX-Token']=store.state.token //Das XX-Token sollte hier entsprechend dem Namen des Anfrageheaders im Login-Interface geschrieben werden}
 
  Konfiguration zurückgeben;
}, Fehler => {
// Anforderungsfehler return Promise.reject(error);
});
 
//Antwort-Abfangjäger axios.interceptors.response.use(
  Antwort => {
    Antwort zurückgeben;
  },
  
  error => { //Standardmäßig werden alle Fehler außer 2XX als Fehler betrachtet, wenn (error.response) {
      Schalter(Fehler.Antwort.Status){
        Fall 401:
          dies.$store.commit('delToken');
          router.replace({ //Zum Pfad der Anmeldeseite springen: '/managerLogin',
            query: { redirect: router.currentRoute.fullPath } // Nimm den umgeleiteten Routenpfad als Parameter und springe nach erfolgreichem Login zur Route});
      }
    }
    gibt Promise.reject(Fehler.Antwort) zurück;
  }
);

Mission erfüllt!

Ich werde die Datenstruktur meiner Backend-Schnittstelle als Referenz veröffentlichen. Der obige Code wird bei Verwendung verschiedener Schnittstellen leicht unterschiedlich sein, daher müssen Sie wissen, wie Sie ihn flexibel verwenden können.

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 Benutzeranmeldung und Token-Verifizierung
  • 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)

<<:  MySQL 8.0.19 WinX64-Installations-Tutorial und Ändern des Initialpassworts unter Windows 10

>>:  Docker erstellt die Codeerkennungsplattform SonarQube und erkennt den Prozess von Maven-Projekten

Artikel empfehlen

Upgrade des Windows Server 2008R2-Dateiservers auf Windows Server 2016

Die Benutzerorganisation verfügt über zwei Window...

Eine Fallstudie zur MySQL-Optimierung

1. Hintergrund Auf jeder OLTP-Datenbankinstanz vo...

So entfernen Sie Wagenrücklaufzeichen aus Text in Linux

Machen Sie sich keine Sorgen, wenn Sie das Wagenr...

Zusammenfassung der Wissenspunkte zur MySQL-Architektur

1. Datenbanken und Datenbankinstanzen Beim Studiu...

Erläuterung, ob im interaktiven Design Paging oder Laden gewählt werden soll

Der Autor dieses Artikels @子木yoyo hat ihn in seine...

Schritt-für-Schritt-Anleitung zum Erstellen einer Kalenderkomponente mit React

Inhaltsverzeichnis Betriebswirtschaftlicher Hinte...

So verwalten Sie MySQL-Indizes und Datentabellen

Inhaltsverzeichnis Tabellenkonflikte finden und b...

Implementierung des CSS-Quellcodes für herzförmige Ladeanimationen

Lassen Sie mich Ihnen ohne weitere Umschweife den...

Lösung für das Problem ungültiger Breiteneinstellungen für Label und Span

Standardmäßig ist die Einstellung der Breite für B...

Einfaches Beispiel für die Verschönerung von HTML-Kontrollkästchen und -Radios

Einfaches Beispiel für die Verschönerung von HTML...

JS implementiert Städtelisteneffekt basierend auf VUE-Komponente

In diesem Artikelbeispiel wird der spezifische Co...

Implementierung einer zirkulären Scroll-Listenfunktion basierend auf Vue

Hinweis: Sie müssen dem übergeordneten Container ...

Eine kurze Diskussion über HTML-Dokumenttypen und -Kodierung

DOKTYP Doctype wird verwendet, um dem Browser mit...