Authentifizierung ist ein Prozess, um die Identität des Benutzers zu identifizieren und ihm Zugriff auf die von der Anwendung bereitgestellten Ressourcen zu gewähren. In der Backend-Entwicklung,
Authentifizierung spielt eine wichtige Rolle, um Benutzern den Zugriff auf bestimmte Ressourcen zu gewähren oder einzuschränken.
Die Authentifizierung kann auf zwei Arten erfolgen: -
Tokenbasierte Authentifizierung.
Sitzungsbasierte Authentifizierung.
Hier sprechen wir über tokenbasierte Authentifizierung.
Tokenbasierte Authentifizierung ist ein weit verbreiteter Sicherheitsmechanismus, um Benutzern ein robustes Erlebnis zu bieten, ohne Kompromisse bei der Sicherheit einzugehen.
Bei der tokenbasierten Authentifizierung generiert der Server beim Anmelden eines Benutzers ein eindeutiges Token für Benutzer. Nachdem der Server das Token generiert hat, wird es an den Client gesendet und lokal auf dem System des Clients gespeichert. Immer wenn der Client eine Anfrage stellt, wird dieser Token jeder Anfrage beigefügt, um die Identität des Benutzers zu überprüfen.
ANFRAGE- Als sich der Benutzer bei der Anwendung anmeldete, stellte der Browser eine Anfrage mit Benutzeranmeldeinformationen an den Server.
VERIFIZIERUNG – Wenn eine Anfrage beim Server eingeht, validiert dieser den Benutzer, generiert einen geheimen Schlüssel, der als Token bekannt ist, und sendet ihn über HTTP an den Benutzer.
Im Allgemeinen wird das Token in einem offenen JWT-Standard [jsonWebTokens] gesendet, der aus einem Header, einer Nutzlast und einer Signatur besteht.
TOKEN VALIDIEREN – Wenn der Benutzer den Token-Geheimcode erhält, wird dieser im Browser des Kunden gespeichert, da er dabei hilft, die Identität zu überprüfen, wann immer der Benutzer eine Anfrage stellt. Dieser Token ist kurzlebig, hat eine Lebensdauer von 15–60 Minuten und wird auch als Zugriffstokencode bezeichnet. Wenn der Benutzer den Zugriffstokencode nicht verwenden kann, wird er nach einem Aktualisierungstokencode gefragt, der 3–4 Tage im System verbleibt.
ANTWORT – Wenn die Validierung abgeschlossen ist, wird dem Benutzer ein Token gewährt oder der Zugriff auf bestimmte Inhalte eingeschränkt.
Beispiel
Nehmen wir ein Beispiel: Wir implementieren die tokenbasierte Authentifizierung mithilfe der Registrierungs- und Anmeldemethode.
Zuerst erstellen wir die Funktionalität für das Registrierungsmodul für einen Benutzer:-
SCHRITT 1: - Benutzer registrieren
Bei der Registrierung werden Daten vom Benutzer erfasst, um ein Konto zu erstellen
// FIRSTLY, WE'LL SELECT THE REGISTER FORM const form = document.querySelector(".register"); // ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER form.addEventListener("submit", (e) => { e.preventDefault(); const username = e.target.username.value; const email = e.target.email.value; const password = e.target.password.value; });
SCHRITT2: - Passwort verschlüsseln
Bevor wir Benutzerdaten in der Datenbank speichern, müssen wir aus Sicherheitsgründen zunächst das Passwort verschlüsseln und es dann in der Datenbank speichern.
Zur Verschlüsselung des Passworts verwenden wir npm package bcrypt.
Zuerst müssen wir das Paket installieren, indem wir im Terminal schreiben: -
npm install bcrypt
Jetzt hashen wir das Passwort wie folgt
// FIRSTLY, WE'LL SELECT THE REGISTER FORM const form = document.querySelector(".register"); // ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER form.addEventListener("submit", (e) => { e.preventDefault(); const username = e.target.username.value; const email = e.target.email.value; const password = e.target.password.value; });
bcrypt.hash ist eine Funktion, die das Passwort mit Salt-Runden hasht. Es generiert jedes Mal einen anderen Hash-Schlüssel, wenn einer von zwei Benutzern dasselbe Passwort hat.
Anmeldefunktion
Wenn ein Benutzer versucht, sich anzumelden, ruft er das gehashte Passwort aus der Datenbank ab und vergleicht es mit dem Passwort, das der Benutzer bei der Anmeldung angegeben hat
// IMPORTING BCRYPT MODULE const bcrypt=require('bcrypt'); // ASSIGNING USERS PASSWORD const plainPassword=userPassword // ENCRYPTING PASSWORD // BASIC SYNTAX // bcrypt.hash(plainTextPassword,salt_rounds) const hashedPassword=bcrypt.hash(plainPassword,10); if(!hashedPassword){ throw new Error('Enable to generate password') } // NOW WE WILL SAVE USER DETAILS AND PASSWORD TO DATABASE console.log('Hashed Password is : ',hashedPassword)
Das obige ist der detaillierte Inhalt vonAuthentifizierungssystem mit NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!