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 TokenErstellen 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 anEinloggen (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ächterDieser 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ägerDieser 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:
|
<<: MySQL 8.0.19 WinX64-Installations-Tutorial und Ändern des Initialpassworts unter Windows 10
1. Rufen Sie den Hostcomputer des Docker-Containe...
1. Inline-Stil, platziert in <body></body...
Dieser Artikel dokumentiert die Installation und ...
Benutzergruppen Unter Linux muss jeder Benutzer e...
lass Utils = { /** * Ist es das Todesjahr? * @ret...
Als ich kürzlich in einem Projekt eine Auswahlabf...
Hallo zusammen, als ich mir heute das HTML des We...
Inhaltsverzeichnis 1. Unterschiede zwischen den b...
1. Zeitdifferenzfunktionen (TIMESTAMPDIFF, DATEDI...
Vorwort Docker kann Umgebungsvariablen für Contai...
Das folgende Skript wird für die geplante Sicheru...
In diesem Artikelbeispiel wird der spezifische Co...
Wenn Sie 5 Datensätze in Tabelle1 einfügen möchte...
1. Entpacken Sie mysql-8.0.21-winx64 2. Konfiguri...
Inhaltsverzeichnis 1. Warum Redux 2. Redux-Datenf...