Heim > Web-Frontend > js-Tutorial > Validierung, Authentifizierung und Autorisierung

Validierung, Authentifizierung und Autorisierung

Linda Hamilton
Freigeben: 2025-01-17 02:35:11
Original
746 Leute haben es durchsucht

Validation, Authentication and Authorization

Inhaltsübersicht

Dieser Artikel erweitert ein früheres Tutorial zur grundlegenden CRUD-API-Erstellung mit Express.js und konzentriert sich auf wichtige Sicherheitsaspekte: Validierung, Authentifizierung und Autorisierung. Wir bauen auf dem vorherigen Beispiel auf, daher wird empfohlen, mit diesem Material vertraut zu sein. Das vollständige Projekt ist auf GitHub verfügbar (Link unten angegeben).

Schlüsselkonzepte

  • Validierung: Sicherstellen, dass vom Benutzer bereitgestellte Daten den vordefinierten Regeln und Standards entsprechen. Dies ist aus Sicherheitsgründen von größter Bedeutung und verhindert Schwachstellen wie SQL-Injection. Mehrere Ressourcen unterstreichen die Bedeutung einer robusten Validierung (Links unten).

  • Authentifizierung:Überprüfung der Identität eines Benutzers. Dabei werden in der Regel Anmeldeinformationen (z. B. Benutzername/E-Mail-Adresse und Passwort) anhand gespeicherter Datensätze überprüft.

  • Autorisierung: Bestimmen, welche Aktionen ein Benutzer ausführen darf. Dies steuert den Zugriff auf Ressourcen basierend auf Benutzerrollen und Berechtigungen.

Implementierung der Validierung

Wir erstellen Validierungsfunktionen für die Felder name, amount und date:

  • name: Zeichenfolge, nicht leer, 10–255 Zeichen.
  • amount: Zahl oder numerische Zeichenfolge, positiv, nicht leer.
  • date: Zeichenfolge, optional (standardmäßig das aktuelle Datum, wenn weggelassen), JJJJ-MM-TT-Format.

Diese Funktionen (in validations.js) nutzen Typprüfung und grundlegende Formatvalidierung. Eine umfassendere Validierung (z. B. Datumsbereichsprüfungen) könnte hinzugefügt werden.

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
Nach dem Login kopieren
Nach dem Login kopieren

Authentifizierung und Autorisierung hinzufügen

Zur Demonstration verwenden wir In-Memory-Datenspeicher (ein Array von Objekten) für Benutzer und Ausgaben. Dies ist nicht für die Produktion geeignet.

In der data.js-Datei werden Benutzer- und Ausgabendaten gespeichert:

<code class="language-javascript">// data.js (excerpt)
let users = [
    { id: "...", email: "...", password: "..." }, //Example User
    // ...more users
];

let expenditures = [
    { id: "...", userId: "...", name: "...", amount: ..., date: "..." }, //Example Expense
    // ...more expenses
];

module.exports = { expenditures, users };</code>
Nach dem Login kopieren

Anmeldeendpunkt (/users/signup)

Dieser Endpunkt erstellt neue Benutzer. Es validiert E-Mail und Passwort, prüft auf E-Mail-Duplikate, generiert eine UUID und speichert (nur für diese Demo) das Rohpasswort. Ein Base64-codiertes Authentifizierungstoken (email:UUID) wird zurückgegeben. Der Einfachheit halber wird auf Passwort-Hashing verzichtet, ist aber in einer Produktionsumgebung von entscheidender Bedeutung.

Anmeldeendpunkt (/users/login)

Dieser Endpunkt authentifiziert vorhandene Benutzer. Es validiert Anmeldeinformationen und gibt bei Erfolg ein Base64-codiertes Authentifizierungstoken zurück.

Geschützte Endpunkte

Um Endpunkte zu schützen (z. B. /expenditures), benötigen wir ein Authentifizierungstoken in den Anforderungsheadern (Authorization-Header). Das Token wird dekodiert, der Benutzer verifiziert und nur die eigenen Daten des Benutzers werden zurückgegeben.

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

Dieser Artikel bietet eine grundlegende Einführung in die Validierung, Authentifizierung und Autorisierung in einer Node.js/Express.js-API. Denken Sie daran, dass die hier gezeigten Sicherheitsmaßnahmen zu Bildungszwecken vereinfacht sind und nicht in Produktionssystemen verwendet werden sollten. Produktionsreife Anwendungen erfordern robustes Passwort-Hashing, sichere Token-Verwaltung (JWTs werden empfohlen) und Datenbankintegration.

Ressourcen

(Denken Sie daran, die Platzhalter in Klammern durch tatsächliche Links zu ersetzen.)

Das obige ist der detaillierte Inhalt vonValidierung, Authentifizierung und Autorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage