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

Docker View JVM-Speichernutzung

1. Rufen Sie den Hostcomputer des Docker-Containe...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Dieser Artikel dokumentiert die Installation und ...

Zusammenfassung der Linux-Benutzergruppen und -Berechtigungen

Benutzergruppen Unter Linux muss jeder Benutzer e...

Zusammenfassung der Javascript-Datumstools

lass Utils = { /** * Ist es das Todesjahr? * @ret...

So verwenden Sie „not in“ zur Optimierung von MySql

Als ich kürzlich in einem Projekt eine Auswahlabf...

Detaillierte Erklärung, wie Node.js mit ES6-Modulen umgeht

Inhaltsverzeichnis 1. Unterschiede zwischen den b...

Verwendung von Umgebungsvariablen in Docker und Lösungen für häufige Probleme

Vorwort Docker kann Umgebungsvariablen für Contai...

So implementieren Sie eine geplante Sicherung der CentOS MySQL-Datenbank

Das folgende Skript wird für die geplante Sicheru...

uniapp implementiert Datums- und Zeitauswahl

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung des JavaScript-Statuscontainers Redux

Inhaltsverzeichnis 1. Warum Redux 2. Redux-Datenf...