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. EinleitungIch 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. ProblemBeim 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. 4. Aufzeichnungen und Anweisungen1. 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 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:
|
<<: Zusammenfassung der Mysql Hochleistungsoptimierungsfähigkeiten
>>: Detailliertes Tutorial zur Installation von qt5.12.8 und Umgebungskonfiguration auf Ubuntu18.04
1. Installieren Sie die Datenbank 1) yum -y insta...
Einführung in die MySQL CURDATE-Funktion Bei Verw...
Inhaltsverzeichnis 1. Der Unterschied zwischen Üb...
In diesem Artikel wird das Deep-Learning-Framewor...
Ich weiß nicht, wann es angefangen hat, aber jede...
Innerhalb der Zeilen können die hellen Rahmenfarb...
Ich glaube, dass vielen Leuten, die MySQL schon l...
01. Befehlsübersicht Der Einfügebefehl fügt die e...
Inhaltsverzeichnis Verwendung von Vue-Mixin Daten...
Inhaltsverzeichnis Überblick Canvas API: Grafiken...
Das Schreiben von XHTML erfordert eine saubere HTM...
Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...
Lösen Sie das Problem, dass der vom Server nach d...
In diesem Artikel werden hauptsächlich drei Metho...
Dieser Artikel beschreibt, wie man eine PHP7 + Ng...