Die Idee hinter der Verwendung eines Tokens zur Login-Verifizierung ist folgende: 1. Wenn Sie sich zum ersten Mal anmelden, ruft das Front-End die Back-End-Schnittstelle auf und übergibt den Benutzernamen und das Kennwort an das Back-End. 2. Das Backend empfängt die Anfrage, überprüft den Benutzernamen und das Passwort und gibt nach erfolgreicher Überprüfung einen Token-Wert an das Frontend zurück. 3. Das Front-End empfängt den vom Back-End übergebenen Token-Wert und speichert das Token im lokalen loaclStorage und vuex. (Dieses Projekt verwendet das Vue-Framework und die globale Statusverwaltung von Vuex) 4. Bei jedem Sprung der Front-End-Route wird ermittelt, ob im localStorage ein Token vorhanden ist. Wenn nicht, wird zur Anmeldeseite gesprungen. Wenn ja, wird zur entsprechenden Seite gesprungen. 5. Packen Sie eine öffentliche Anforderungsschnittstellenmethode und fügen Sie das Token jedes Mal in den Anforderungsheader ein, wenn Sie den Aufruf der Backend-Schnittstelle anfordern 6. Das Backend ermittelt, ob sich im Request-Header ein Token befindet. Wenn ein Token vorhanden ist, holt es sich das Token und verifiziert das Token. Wenn die Verifizierung erfolgreich ist, werden die Daten zurückgegeben. Wenn die Verifizierung fehlschlägt (z. B. wenn das Token abläuft), wird ein Statuscode an das Frontend zurückgegeben, normalerweise 401. Wenn sich im Request-Header kein Token befindet, wird ebenfalls 401 zurückgegeben. (Schritt 6 wird vom Backend ausgeführt, und das Frontend muss nur den vom Backend zurückgegebenen Status entsprechend verarbeiten.) 7. Wenn der vom Front-End-Backend zurückgegebene Statuscode 401 lautet, löschen Sie das Token und springen Sie zur Anmeldeseite. Praktische Schritte1. Fügen Sie in der Datei store.js im Projektspeicher globale Methoden zum Speichern und Löschen von Token hinzu. // In store.js Methoden zum Hinzufügen und Löschen von Token in Mutationen hinzufügen. Vue von „vue“ importieren. Vuex von „vuex“ importieren Vue.Verwenden(Vuex) const state = { // Global verwalteter Datenspeicher isLogin:'0', ser:null, Token:localStorage.getItem('Token') ? localStorage.getItem('Token'):'', // Token }; exportiere standardmäßig neuen Vuex.Store({ Zustand, getters:{ // Auf Datenänderungen warten getStorage(state){ // Die lokal gespeicherten Anmeldeinformationen abrufen if(!state.token){ Status.Token = JSON.parse(localStorage.getItem(Schlüssel)) } Status-Token zurückgeben } }, Mutationen: $_setToken(state, value) { // Speichertoken setzen Status.Token = Wert; localStorage.setItem('Token', Wert); }, $_removeStorage(Status, Wert){ // Token löschen localStorage.removeItem('Token'); }, } }) 2. Nachdem die Anmeldemethode auf der Anmeldeseite (login.vue) die Schnittstelle erfolgreich aufgerufen hat, wird das Token im lokalen Speicher localStorage gespeichert. // login.vue Seitenmethoden:{ loginFun(){ this.$api.post('angeforderter Link zur Backend-Schnittstelle',{ Daten:{ userId:this.user, // Anmeldename userPwd:this.psw, // Anmeldekennwort } }).then((res) => { wenn(res.data.status == 200){ var userInfo = res.data.data; dies.$store.commit('$_setToken', userInfo.token); Toast({ message: 'Anmeldung erfolgreich', type: 'success', duration: 1500}); // UI-Popup-Fenster-Eingabeaufforderung this.$router.push({ name:'homePage' }); // Zur Startseite springen } else { Toast({ message: res.data.message, duration: 1500}); // UI-Popup-Fenster-Eingabeaufforderung } }) } } 3. Fügen Sie in main.js einen Anforderungs-Interceptor hinzu und fügen Sie dem Anforderungsheader ein Token hinzu. Vue von „vue“ importieren App aus „./App.vue“ importieren Router aus „./router/router“ importieren Store aus „./store/store“ importieren importiere PublicFun von './utils/publicFun' // Öffentliche Methode importiere './mintUi' // Importiere MintUi-Komponenten nach Bedarf. Konfiguriere sie bei Bedarf in mintUi.js. importiere '@/assets/mui/css/mui.css' // mui.css-Stil /* Axios-Plug-in importieren */ Axios von „Axios“ importieren Vue.prototype.$http = axios; // Globaler Routing-Konstruktor, bestimmt, ob eine Anmeldung erfolgen und zur Seite gesprungen werden soll router.beforeEach((to, from, next) => { if (to.matched.some(m => m.meta.requireAuth)) { // Anmeldung erforderlich if(window.localStorage.token && window.localStorage.isLogin === '1'){ nächste() } sonst wenn (zu.Pfad !== '/login') { let token = window.localStorage.token; wenn (Token === 'null' || Token === '' || Token === undefiniert){ weiter({Pfad: '/login'}) Toast({ message: ‚Es wurde festgestellt, dass Sie nicht angemeldet sind. Bitte melden Sie sich vor der Bedienung an!‘, Dauer: 1500 }) } } anders { nächste() } } else { // Keine Anmeldung nötig next() } }) //Öffentliche URL konfigurieren Axios.defaults.baseURL = "http://www.sinya.online/api/" //Anforderungs-Interceptor hinzufügen axios.interceptors.request.use( Konfiguration =>{ wenn (store.state.token) { config.headers.common['token'] = store.state.token } Konfiguration zurückgeben; }, Fehler =>{ //Was tun bei Anforderungsfehlern? 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: localStorage.removeItem('Token'); router.ersetzen({ Pfad: '/views/login', Abfrage: {redirect: router.currentRoute.fullPath}//Nach erfolgreicher Anmeldung zur aktuell durchsuchten Seite springen}) } } }) Vue.prototype.$publicFun = PublicFun // Globale öffentliche Methode einbinden Vue.prototype.$apps = Apps // öffentliche Methode app.js Vue.config.productionTip = false neuer Vue({ Router, speichern, rendern: h => h(App) }).$mount('#app') Token ansehen Beim Verlassen
returnFun(){ // Abmelden MessageBox.confirm(this.lang.logoutTip).then(action => {
this.$store.commit('$_removeStorage'); // Anmeldeinformationen löschen this.$router.push({
Name:'Anmelden'
});
Toast({message:this.lang.logoutSuccess, Dauer: 1500});
}).fangen(()=>{})
} Dies ist das Ende dieses Artikels über den Beispielcode zum Abrufen eines Vue-Tokens zur Implementierung der Token-Anmeldung. Weitere relevante Inhalte zur Vue-Token-Anmeldung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Analyse des Produktstatus im interaktiven Design, der im Design nicht ignoriert werden kann
Es gibt viele Server, die statische Websites host...
1.MySQL-Replikationskonzept Dies bedeutet, dass d...
In diesem Artikel werde ich die relevanten Inhalt...
Codebeispiel Fügen Sie im Head-Tag eine Codezeile ...
Hintergrund Da ich alle meine Aufgaben auf Docker...
Aufgrund der zunehmenden Anzahl von Schaltflächen...
Adobe Brackets ist eine Open Source-, einfache un...
Ich habe node.js zum Erstellen des Servers gewähl...
<br />Wenn wir über Navigation sprechen, geh...
Direkt codieren: Wählen Sie „bigint unsigned“ als...
Vorwort: Ich glaube, dass diejenigen, die dieses ...
In diesem Artikel wird die Verwendung und Install...
Problembeschreibung Als ich kürzlich ein Springbo...
Schauen wir uns zunächst die Codedateistruktur an...
Inhaltsverzeichnis 1. Der Ursprung der Gabel 2. F...