Einführung in JWTWas ist JWT Der vollständige Name lautet Das { "Name": "Zhang San", "Rolle": "Administrator", "Ablaufzeit": "1. Juli 2018 00:00" } Warum brauchen wir JWT? Schauen wir uns zunächst den allgemeinen Authentifizierungsprozess an, der auf der Implementierung 1. Der Benutzer sendet seinen Benutzernamen und sein Passwort an den Server. 2. Nach bestandener Server-Verifizierung werden relevante Daten wie Benutzerrolle, Login-Zeit etc. in der aktuellen 3. Der Server gibt dem Benutzer eine 4. Jede nachfolgende Anfrage des Benutzers gibt 5. Der Server empfängt Hier gibt es jedoch ein großes Problem. Wenn es sich um einen Servercluster handelt, ist eine gemeinsame Nutzung der Sitzungsdaten erforderlich und jeder Server kann die Sitzung lesen. Der Aufwand für diese Umsetzung ist relativ hoch. JWT-Datenstruktur Die drei Teile von { "alg": "HS256", "typ": "JWT" }
Natürlich können Sie auch private Felder anpassen. Beachten Sie jedoch, dass JWT standardmäßig unverschlüsselt ist und von jedem gelesen werden kann. Geben Sie in diesem Teil daher keine geheimen Informationen ein. HMACSHA256 base64UrlEncode(Header) + "." + base64UrlEncode(Nutzlast), Geheimnis) Nach der Berechnung der Signatur werden die drei Teile Sicherheit von JWT
Einfache Node-Demo – Implementierung von Koa JWT Nachdem wir über theoretisches Wissen gesprochen haben, schauen wir uns an, wie Zunächst generiert der Server nach der Anmeldung des Benutzers Hier verwenden wir jsonwebtoken, kann Die Koa-jwt-Middleware kapselt Erstellen Sie schnell ein Koa-Projekt Ich habe festgestellt, dass es derzeit keine offizielle Möglichkeit wie Installieren npm install -g koa-generator Starten Sie das Projekt Öffnen Sie Token generieren Zur Vereinfachung der Demonstration definiere ich die Variable const crypto = erfordern("Krypto"), jwt = erforderlich("jsonwebtoken"); // TODO: Datenbank verwenden // Dies sollte in einer Datenbank gespeichert werden, dient aber nur zur Demonstration let userList = []; Klasse UserController { // Benutzeranmeldung static async login(ctx) { Konstante Daten = ctx.request.body; wenn (!data.name || !data.password) { Rückgabewert ctx.body = { Code: "000002", Meldung: „Ungültiger Parameter“ } } const Ergebnis = Benutzerliste.find(Element => Element.name === Daten.name && Element.Passwort === crypto.createHash('md5').update(Daten.Passwort).digest('hex')) wenn (Ergebnis) { Konstantentoken = jwt.sign( { Name: Ergebnis.Name }, "Gopal_token", // geheim { expiresIn: 60 * 60 } // 60 * 60 Sekunden ); Rückgabewert ctx.body = { Code: "0", Meldung: "Anmeldung erfolgreich", Daten: { Zeichen } }; } anders { Rückgabewert ctx.body = { Code: "000002", Meldung: „Falscher Benutzername oder falsches Passwort“ }; } } } module.exports = BenutzerController; Generieren Sie ein Der Client erhält ein Token Nachdem sich das Front-End angemeldet und anmelden() { dies.$axios .post("/api/login", { ...diese.RegelForm, }) .then(res => { wenn (res.code === "0") { this.$message.success('Anmeldung erfolgreich'); localStorage.setItem("Token", res.data.token); dies.$router.push("/"); } anders { dies.$Nachricht(res.Nachricht); } }); } Kapseln Sie // Axios Request Interceptor verarbeitet Anforderungsdaten axios.interceptors.request.use(config => { const token = localStorage.getItem('token'); config.headers.common['Authorization'] = 'Bearer ' + token; // Notieren Sie hier die Autorisierung Konfiguration zurückgeben; }) Token überprüfen Die Verwendung // Fehlerbehandlung app.use((ctx, next) => { returniere weiter().catch((err) => { wenn (err.status === 401) { ctx.status = 401; ctx.body = 'Geschützte Ressource, verwenden Sie den Autorisierungsheader, um Zugriff zu erhalten\n'; }anders{ Fehler machen; } }) }) // Hinweis: Platzieren Sie es vor der Route app.use(koajwt({ Geheimnis: „Gopal_token“ }).unless({ // Whitelist-Pfad konfigurieren: [/\/api\/register/, /\/api\/login/] })) // Routen app.verwenden(index.routes(), index.allowedMethods()) app.use(Benutzer.Routen(), Benutzer.allowedMethods()) Dabei ist es wichtig, folgende Punkte zu beachten:
Demo Wenn Sie direkt auf eine Schnittstelle zugreifen, die eine Anmeldung erfordert, tritt Registrieren Sie sich zuerst und melden Sie sich dann an. Andernfalls wird die Meldung angezeigt, dass der Benutzername oder das Passwort falsch ist. Nach dem Einloggen Zusammenfassen Dieser Artikel fasst das Wissen zur Aufgrund der Länge des Artikels habe ich die Möglichkeit, separat über den Quellcode von Dieser Artikel sieheJSON Web Token – Erste Schritte Node.js-Anwendung: Koa2 verwendet JWT zur Authentifizierung Dies ist das Ende dieses Artikels über die Verwendung von koa2 in Node, um eine einfache JWT-Authentifizierungsmethode zu implementieren. Weitere relevante Inhalte zur Node koa2 JWT-Authentifizierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Trash-Cli: Befehlszeilen-Papierkorb-Tool unter Linux
>>: Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.17 unter Windows 10
Inhaltsverzeichnis Was ist nodejs Installieren Si...
Das Implementierungsprinzip der Kettenprogrammier...
Das Vue-Projekt implementiert eine aktualisierte ...
Der Vorgang der Installation der MySQL-Datenbank ...
1: Unterschiede bei Geschwindigkeit und Lademethod...
Beim Entwerfen einer Seite müssen wir das DIV häu...
1. Transaktionen haben ACID-Eigenschaften Atomari...
Codebeispiel: öffentliche Klasse JDBCDemo3 { öffe...
Lösung: Beenden Sie alle mit .vscode in Zusammenh...
Inhaltsverzeichnis 1. Installieren Sie den Vue-Vi...
Inhaltsverzeichnis Demo1 Fragment erstellen Svelt...
Inhaltsverzeichnis Anwendungsszenario Ideen Proje...
Heute lernen wir, wie man mit CSS eine coole Bild...
Anforderungsszenario: Die vorhandene PXC-Umgebung...
Ich glaube, dass viele Partner, die gerade erst m...