Dieses Tutorial von Passport.js Führen Sie Sie durch die Schritte zum Einrichten einer Authentifizierungsstrategie Node.js lokale Verwendung Redis. Sie lernen, eine Authentifizierungsschnittstelle mit zu erstellen Passport.js, Hier geben Benutzer ihre Benutzernamen und Passwörter an. Trotz seiner Komplexität können Authentifizierungsmechanismen leicht in implementiert werden Node.js.
Zu verwendende Technologien
Bevor wir kopfüber in unser Passport.js-Authentifizierungs-Tutorial springen, werfen wir einen Blick auf die Technologien, die wir in diesem Kapitel verwenden werden.
Was ist Passport.js?
- Passport.js ist eine Authentifizierungs-Middleware Node.js einfach und diskret für Node.js
- Passport.js kann in jeder webbasierten Anwendung platziert werden Express.js.
- Reisepass ist ein Middleware Authentifizierung für Node.js die wir für das Sitzungsmanagement verwenden werden.
Was ist Redis?
Redis es un almacén de estructura de datos en memoria de Open SourceEl Código Abierto u Open Source se refiere al código fuente del software que es abiertamente alcanzable y que puede ser cambiado y distribuido por cualquier persona. La propuesta de código abierto estipula diez requerimientos para las licencias de software de código abierto. El principio El código fuente de un software se hace público: cualquiera puede leerlo, desarrollar el propio software y copiarlo. El software puede ser utilizado o distribuido Plus (con licencia BSD), utilizado como base de datos, ZwischenspeicherUn caché es un tipo de memoria auxiliar de la que se puede recuperar a alta velocidad con una capacidad de almacenamiento relativamente pequeña. Se encuentra entre la unidad central de procesamiento (CPU) y la memoria principal. Ayuda a evitar el acceso al disco duro o los recálculos complejos almacenando temporalmente ciertos datos y haciéndolos disponibles rápidamente cuando sea necesario. El caché almacena una copia de la petición actual y Plus y intermediario de mensajes.
Redis unterstützt verschiedene Arten von abstrakten Datenstrukturen wie Zeichenfolgen, Hashes, Listen, Mengen, geordnete Mengen mit Bereichsabfragen, Bitmaps, Hyperlinks und Geodatenindizes mit Funkabfragen.
Wir speichern die Informationen der Sitzung unseres Benutzers in Redis, und nicht im Gedächtnis des Prozesses. Auf diese Weise lässt sich unsere Anwendung viel einfacher skalieren.
Die Demoanwendung, die authentifiziert werden muss
Erstellen wir zu Demonstrationszwecken eine Anwendung, die genau die folgenden Funktionen ausführt:
- ein Anmeldeformular offenlegen,
- Legen Sie zwei geschützte Seiten frei:
- eine Profilseite,
- gesicherte Notizen
Die Struktur des Projekts
Wir werden die folgende Struktur verwenden:
├── App | ├── Authentifizierung | ├── Hinweis | ├── Benutzer | ├── index.js | └── layout.hbs ├── config | └── index.js ├── index.js └── package.json
Wie Sie sehen können, organisieren wir die Dateien und Verzeichnisse nach den Merkmalen. Wir werden eine Benutzerseite, eine Notizenseite und einige Funktionen im Zusammenhang mit der Authentifizierung haben.
Der Authentifizierungsablauf von Node.js.
Unser Ziel¿Qué es un objetivo?En marketing, un objetivo es el resultado que se pretende alcanzar en un periodo de tiempo, a través el uso de los recursos disponibles. Por tanto, se debe formular de una forma clara y hace falta que sea accesible y medible. Plus es implementar el siguiente flujo de autenticación en nuestra aplicación utilizando Passport.js:
- Der Benutzer gibt den Benutzernamen und das Passwort ein
- Die Anwendung prüft, ob sie übereinstimmen.
- Wenn sie übereinstimmen, senden Sie eine Kopfzeile Set-Cookie zur Authentifizierung anderer Seiten.
- Cuando el usuario visita páginas del mismo DomainUn dominio es una sección de Internet con direcciones que comparten un sufijo común o están bajo el control de una organización o individuo en particular. Está organizado jerárquicamente. Tanto los objetos físicos como los virtuales pueden ser direccionados con el nombre de dominio. Estos objetos pueden ser webs, ordenadores en red o servicios, como impresoras, faxes o servidores de correo. Cada objeto está referenciado por una dirección IP única, Plus, das PlätzchenUna cookie es un registro que es almacenado por un servidor web en el disco duro del usuario. El archivo recibido es una combinación de caracteres formada por números y letras, que asigna una cierta identidad al usuario (cliente). No podrán exceder un tamaño máximo de 4 KB y contendrán, por ejemplo, información sobre la extensión de la visita o sobre lo que el usuario haya pulsado. Cuando el cliente Plus configurada previamente se agregará a todas las solicitudes
- Authentifizieren Sie eingeschränkte Seiten mit diesem Cookie.
Führen Sie die folgenden drei Schritte aus, um eine solche Authentifizierungsstrategie in einer Node.js-Anwendung mit Passport.js zu konfigurieren:
Schritt 1: Express-Konfiguration
Vamos a utilizar Express para el marco del ServerLos servidores son ordenadores centrales y potentes dentro del campo de la tecnología de la información que procesan y proporcionan software y archivos en una red. Desde el punto de vista de un cliente, varios ordenadores en una red pueden ponerse en contacto con el servidor central para conseguir la información solicitada. En la arquitectura cliente-servidor, el servidor puede ser un software que proporciona un servicio y se ejecuta en Plus.
// Datei: app / index.js const express = erfordern ('express') const passport = erfordern ('passport') const session = erfordern ('express-session') const RedisStore = erfordern ('connect-redis') ( session) const app = express () app.use (session ({store: new RedisStore ({url: config.redisStore.url}), secret: config.redisStore.secret, resave: false, saveUninitialized: false})) app .use (passport.initialize ()) app.use (passport.session ())
Was haben wir hier gemacht?
Zunächst benötigen wir alle Abhängigkeiten, die das Sitzungsmanagement benötigt. Danach haben wir eine neue Instanz des Moduls erstellt Express-Sitzung, das wird unsere Sitzungen speichern.
Für den Backup-Speicher verwenden wir Redis, aber du kannst jeden anderen benutzen, wie MySQLConcepto de MySQL¿Qué es el programa MySQL?MySQL es un sistema de administración de bases de datos que tiene una doble licencia. Por una parte es de código abierto, pero por otra, tiene una versión comercial gestionada por la compañía Oracle. En este momento, es la base de datos de código abierto más famosa y utilizada en el mundo entero.Como él, podemos hallar otras como la propia Oracle o Microsoft SQL Plus oder MongoDB.
Schritt 2: Einrichten von Passport.js für Node.js.
Passport.js ist ein großartiges Beispiel für eine Bibliothek, die Plugins verwendet. In diesem Tutorial von passport.js, Wir fügen das Modul hinzu Reisepass-lokal Dies ermöglicht die einfache Integration einer einfachen lokalen Authentifizierungsstrategie unter Verwendung von Benutzernamen und Kennwörtern.
Der Einfachheit halber verwenden wir in diesem Beispiel keinen zweiten Sicherungsspeicher, sondern nur eine speicherinterne Benutzerinstanz. In realen Anwendungen, Benutzer finden Es würde einen Benutzer in einer Datenbank nachschlagen.
// Datei: app / authenticate / init.js const passport = erfordern ('passport') const bcrypt = erfordern ('bcrypt') const LocalStrategy = erfordern ('passport-local'). Strategie const user = {Benutzername: 'test -user ', passwordHash:' bcrypt-hashed-password ', id: 1} passport.use (neue LocalStrategy ((Benutzername, Passwort, erledigt) => {findUser (Benutzername, (err, Benutzer) => {if (err )) {return done (err)} // Benutzer nicht gefunden if (! user) {return done (null, false)} // Verwenden Sie immer Hash-Passwörter und Vergleiche mit fester Zeit bcrypt.compare (password, user.passwordHash, ( err, isValid) => {if (err) {return done (err)} if (! isValid) {return done (null, false)} return done (null, user)})})})
Sobald die Rückkehr von Benutzer finden Mit unserem Benutzerobjekt müssen Sie nur noch das Hash-Passwort des Benutzers und das tatsächliche Passwort vergleichen, um festzustellen, ob eine Übereinstimmung vorliegt. Speichern Sie immer gehashte Passwörter und verwenden Sie einen festen Zeitvergleich, um Zeitangriffe zu vermeiden.
Wenn es sich um eine Übereinstimmung handelt, können die Benutzer Folgendes eingeben: Rückgabe erfolgt (null, Benutzer) (Rückgabe des Passes an den Benutzer), wenn nicht, geben wir einen nicht autorisierten Fehler zurück (Rückgabe nichts an den Passport- return done (null)).
Schritt 3: Fügen Sie geschützte Endpunkte hinzu
Um geschützte Endpunkte hinzuzufügen, nutzen wir das Muster von Middleware was benutzt du Ausdrücken. Dafür werden wir das schaffen Middleware Authentifizierung zuerst:
// Datei: app / authentication / middleware.js Funktion authenticationMiddleware () {Rückgabefunktion (req, res, next) {if (req.isAuthenticated ()) {return next ()} res.redirect ('/')}}
Es hat nur eine Rolle, wenn der Benutzer authentifiziert ist (die richtigen Cookies hat); ruf einfach den nächsten an Middleware. Andernfalls wird zu der Seite weitergeleitet, auf der sich der Benutzer anmelden kann.
Die Verwendung ist so einfach wie das Hinzufügen einer neuen Middleware zur Routendefinition.
// Datei: app / user / init.js const passport = require ('passport') app.get ('/ profile', passport.authenticationMiddleware (), renderProfile)
Zusammenfassung - Authentifizierung mit Passport.js
In diesem Tutorial zu Passport.js haben Sie gelernt, wie Sie Ihrer Node.js-Anwendung eine grundlegende Authentifizierung hinzufügen. Später können Sie es mit verschiedenen Authentifizierungsstrategien erweitern, z FacebookConcepto de Facebook¿Qué es Facebook?Facebook es una red social hecha por personas y pensada para conectar a personas. Es una de las pioneras de este sector, una de las primeras plataformas que llegaron a Internet con la finalidad de facilitar la comunicación entre usuarios de todas partes, compartir información y contactar con familiares lejanos, amistades o conocidos.Hoy en día, es la red más popular de todo Internet. Nacida en 2004 Plus oder TwitterTwitter es una red social en Internet que permite a los usuarios difundir información en tiempo real. La característica más notable de twitter solía ser su limitación de tweets a 140 caracteres, pero en septiembre de 2017 se incrementó a 280 caracteres. El único requerimiento para utilizar Twitter es la creación de una cuenta gratuita. Tweets Twitter contiene pequeñas piezas de información llamada tweets. Se puede escribir un máximo de Plus. Weitere Strategien finden Sie unter http://passportjs.org/.





