Anmeldung zur Token-Verifizierung im Vue-Projekt (Front-End-Teil)

Anmeldung zur Token-Verifizierung im Vue-Projekt (Front-End-Teil)

In diesem Artikelbeispiel wird der spezifische Code für die Anmeldung zur Token-Verifizierung im Vue-Projekt zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

1. Einleitung

Ich arbeite derzeit an meinem Abschlussprojekt. Ich arbeite am Backend und weiß nicht viel über das Frontend. Ich habe mir fast zwei Wochen lang das Vue-Framework angesehen, bevor ich mich ein bisschen wie ein Anfänger fühle. Daher ist dieser Artikel möglicherweise nicht gut geschrieben. Es ist nur eine Aufzeichnung. Wenn etwas falsch oder unzureichend ist, weisen Sie bitte darauf hin.

2. Problem

Beim Erstellen einer Anmeldeoberfläche habe ich mich für die Verwendung eines Tokens zur Bestätigung der Anmeldung entschieden. Das von mir verwendete Front-End-Framework war Vue.js und element-ui. So verwenden Sie ein Token zur Bestätigung der Anmeldung in Vue.

3. Denken

1. Verwenden Sie ein Token, um die Anmeldung zu bestätigen. Wenn sich der Benutzer anmeldet, generiert das Backend ein Token und gibt es an das Frontend zurück. Das Frontend fügt das Token in den Anforderungsheader ein (dies ist Baidus, im Allgemeinen wird es in den Anforderungsheader eingefügt) und ruft dann die Schnittstelle auf, um das Token in den Anforderungsheader einzufügen und es an das Backend zurückzugeben.
2. Nachdem sich der Benutzer angemeldet hat, muss das Front-End das Token speichern und es beim späteren Senden einer Anfrage herausnehmen.
3. Fügen Sie beim Senden jeder Anforderung das Token zum Anforderungsheader hinzu und schreiben Sie einen globalen Interceptor.

4. Aufzeichnungen und Anweisungen

1. Erstellen Sie einen Store-Ordner unter dem src-Ordner (mein Vue-Projekt wird mit Vue-CLI-Scaffolding erstellt) und erstellen Sie eine index.js im Store

2. src/store/index.js

importiere Vue von „vue“;
importiere Vuex von „vuex“;

Vue.use(Vuex);

const store = neuer Vuex.Store({
 Zustand: {
  Token: localStorage.getItem('Token') ? localStorage.getItem('Token') : ''
 },
 Mutationen:
  setToken (Status, Token) {
   Zustand.Token = Token;
   localStorage.setItem("Token",Token.Token);
  },
  delToken(Status) {
   Zustand.Token = '';
   localStorage.removeItem("Token");
  }
 }
})

Standardspeicher exportieren;

veranschaulichen:

(1) Bevor Sie den Inhalt in src/store/index.js schreiben, müssen Sie Vuex in Ihrem Projekt installieren. Hier stellen wir nur die npm-Installationsmethode bereit. Öffnen Sie cmd im Stammverzeichnis des Projekts, geben Sie den folgenden Befehl ein und drücken Sie dann die Eingabetaste

npm installiere vuex --save

(2) In diesem store/store/index.js steht der Code token.token dafür, dass beim Aufruf dieser Methode in login.vue ein Objekt übergeben wird (selbst wenn Sie meinen, einen String übergeben zu haben, wissen Sie nicht, warum er in das Objekt eingefügt wird) und das übergebene Objekt das Attribut token besitzt.

localStorage.setItem("Token",Token.Token);

3. src/main.js

// Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll
// (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias ​​festgelegt.
Vue von „vue“ importieren
App aus „./App“ importieren
Router aus „./router“ importieren
importiere ElementUI von „element-ui“
importiere 'element-ui/lib/theme-chalk/index.css'
Axios von „Axios“ importieren
Versprechen von „es6-promise“ importieren
Store aus „./store/index“ importieren
versprechen.polyfill()

Vue.use(ElementUI)
Vue.config.productionTip = falsch
 

axios.defaults.baseURL = "http://192.168.80.152:8088"
axios.defaults.headers.post['Inhaltstyp'] = "Anwendung/json"
axios.defaults.withCredentials = wahr
axios.defaults.headers.common['Autorisierung'] = store.state.token
Vue.prototype.$axios = axios
 

/* eslint-deaktivieren Sie no-new */
neuer Vue({
  el: '#app',
  Router,
  speichern,
  Komponenten: { App },
  Vorlage: '<App/>'
});

// Anfrage-Interceptor hinzufügen axios.interceptors.request.use(config => {
// Was ist vor dem Senden einer Anfrage zu tun? // Überprüfen Sie, ob ein Token vorhanden ist, und fügen Sie ggf. jedem Seitenkopf ein Token hinzu.
  wenn (store.state.token) {
    config.headers.common['Autorisierung']=store.state.token.token
  }

  Konfiguration zurückgeben;
}, Fehler => {
// Etwas mit dem Anforderungsfehler tun return Promise.reject(error);
});

// HTTP-Antwort-Interceptor axios.interceptors.response.use(
  Antwort => {

    Antwort zurückgeben;
  },
  Fehler => {

    wenn (Fehler.Antwort) {
      Schalter (Fehler.Antwort.Status) {
        Fall 401:
          dies.$store.commit('del_token');
          router.ersetzen({
            Pfad: '/login',
            Abfrage: {redirect: router.currentRoute.fullPath}//Nach erfolgreicher Anmeldung zur aktuell durchsuchten Seite springen})
      }
    }
    Rückgabewert Promise.reject(error.response.data)
  });

veranschaulichen

(1) Dies ist der vollständige Code. Er muss nicht mit diesem identisch sein. Lassen Sie uns über die Verwendung der Token-Verifizierung sprechen. Was sollte in src/main.js konfiguriert werden? (2)

Store aus „./store/index“ importieren

Der obige Code importiert die zuvor geschriebene Datei src/store/index.js in main.js

neuer Vue({
  el: '#app',
  Router,
  speichern,
  Komponenten: { App },
  Vorlage: '<App/>'
});

Der Store im obigen Code wird auf Vue gemountet, und dann kann this.$store verwendet werden, um den Store abzurufen

(3)

// Anfrage-Interceptor hinzufügen axios.interceptors.request.use(config => {
// Was ist vor dem Senden einer Anfrage zu tun? // Überprüfen Sie, ob ein Token vorhanden ist, und fügen Sie ggf. jedem Seitenkopf ein Token hinzu.
  wenn (store.state.token) {
    config.headers.common['Autorisierung']=store.state.token.token
  }

  Konfiguration zurückgeben;
}, Fehler => {
// Etwas mit dem Anforderungsfehler tun return Promise.reject(error);
});

// HTTP-Antwort-Interceptor axios.interceptors.response.use(
  Antwort => {

    Antwort zurückgeben;
  },
  Fehler => {

    wenn (Fehler.Antwort) {
      Schalter (Fehler.Antwort.Status) {
        Fall 401:
          dies.$store.commit('del_token');
          router.ersetzen({
            Pfad: '/login',
            Abfrage: {redirect: router.currentRoute.fullPath}//Nach erfolgreicher Anmeldung zur aktuell durchsuchten Seite springen})
      }
    }
    Rückgabewert Promise.reject(error.response.data)
  });

Der obige Code ist ein Anforderungs-Interceptor, der das Token in den Anforderungsheader der Anforderung einfügt

4. src/router/index.js

router.beforeEach((bis, von, weiter) => {
  wenn(zu.Pfad === '/login') {
    nächste();
  } anders {
    : Lassen Sie token = localStorage.getItem('token');
    wenn(token === 'null' || token === '') {
      weiter('/login');
    }anders {
      nächste();
    }
  }
});

veranschaulichen

(1) Der obige Code ist die Konfiguration von src/router/index.js. Der Router muss verfügbar gemacht werden. Der Code enthält einen Export-Standard.

**5. src/Komponenten/login/login.vue **

//Führen Sie etwas zum Exportstandard dieses Komponenten-Skript-Tags ein, importieren Sie { mapMutations } von „vuex“;
//Dies ist der Methodenteil methods: {

      ...mapMutations(['setToken']),
      login(formular){


        lass _this = dies;
        wenn(formular.telefon === "" || form.password === ""){
          _this.$message.error("Bitte geben Sie Ihre Telefonnummer oder Ihr Passwort ein");
        }anders {
          dies.$axios.post(`/user/check/login`,_this.form).then(res => {
            var code = res.data.code;
            var mes = res.data.message;
            wenn(code === 1){
             /* Speicher.setItem("Token",res.data.data);
              _dieses.token = res.daten.daten;*/
             // _this.setToken({Autorisierung: _this.token})
             // console.log("Erfolg");
              _this.$message.success('Anmeldung erfolgreich');
              _this.token = res.daten.daten;
              _this.setToken({token: _this.token});
              _this.$router.push({Pfad:"/home"});

              var Speicher = Fenster.localStorage;
              //Alarm(storage.getItem("Token"));

              wenn(dies.$store.state.token) {
                dies.$router.push('/home');
                Konsole.log(dies.$store.state.token.token);
              } anders {
                dies.$router.replace('/login');
              }

            }anders{
              _this.$message.error(mes);
            }
          }).catch(Funktion(Fehler){
            console.log(fehler);
            _this.$message.error("Anmeldefehler, bitte kontaktieren Sie den Programmentwickler!!");

          })
        }

      }
     }

veranschaulichen

(1)

lass _this = dies;

Der obige Code fügt dies in die Variable _this ein. Es gibt zwei Arten von Funktionen: normale Funktionen: function(){} und Pfeilfunktionen. Das this von normalen Funktionen bezieht sich auf die Referenz des aktuellen Objekts. Das aktuelle Objekt ist hier unsicher. Das this von Pfeilfunktionen ist global. Das durch this dargestellte Objekt ist unveränderlich und kann in keiner Weise geändert werden. Den genauen Unterschied finden Sie unter: Der Unterschied zwischen Pfeilfunktionen und normalen Funktionen

 _this.setToken({token: _this.token});

Der obige Code ruft die Methode setToken() in src/store/index.js auf. Der Grund, warum sie mit _this aufgerufen werden kann, liegt darin, dass der Store zuvor in src/main.js auf vue gemountet wurde.

...mapMutations(['setToken']),

Vor der Methode login() in src/components/login/login.vue befindet sich ein Code-Stück. Ich weiß nicht, was es macht. Es könnte eine Methode in der angegebenen Punktzahl sein. Das ist meine Vermutung basierend auf den darin enthaltenen Parametern. Es könnte nicht richtig sein. Ich hoffe, jemand kann mir einen Rat geben.

Nachfolgend finden Sie Referenzartikel, die alle gut geschrieben sind.

1. So erhalten Sie ein Token in Vue und schreiben es in den Header
2. Implementieren Sie die Benutzeranmeldung und die Token-Verifizierung im Vue-Projekt

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 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

<<:  Zusammenfassung der Mysql Hochleistungsoptimierungsfähigkeiten

>>:  Detailliertes Tutorial zur Installation von qt5.12.8 und Umgebungskonfiguration auf Ubuntu18.04

Artikel empfehlen

Detailliertes Beispiel der MySQL curdate()-Funktion

Einführung in die MySQL CURDATE-Funktion Bei Verw...

So verwenden Sie Vue zum Implementieren von CSS-Übergängen und Animationen

Inhaltsverzeichnis 1. Der Unterschied zwischen Üb...

So lösen Sie das Problem der automatischen Paketaktualisierung im Debian-System

Ich weiß nicht, wann es angefangen hat, aber jede...

So verwenden Sie den Linux-Paste-Befehl

01. Befehlsübersicht Der Einfügebefehl fügt die e...

Detaillierte Erklärung zur Verwendung von Vue-Mixin

Inhaltsverzeichnis Verwendung von Vue-Mixin Daten...

JS Canvas-Oberfläche und Animationseffekte

Inhaltsverzeichnis Überblick Canvas API: Grafiken...

Saubere XHTML-Syntax

Das Schreiben von XHTML erfordert eine saubere HTM...

Detaillierte Erklärung zu Drag-Time und Drag-Case in JavaScript

Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...

Fallstudie: Ajax responseText analysiert JSON-Daten

Lösen Sie das Problem, dass der vom Server nach d...

Drei Möglichkeiten, das horizontale Div-Layout auf beiden Seiten auszurichten

In diesem Artikel werden hauptsächlich drei Metho...

So installieren Sie eine PHP7 + Nginx-Umgebung unter CentOS6.6

Dieser Artikel beschreibt, wie man eine PHP7 + Ng...