Heim >Web-Frontend >js-Tutorial >Kekse und Sitzungen in React verstehen
Schlüsselpunkte
document.cookie
-API verwenden, benutzerdefinierte Hooks erstellen oder Bibliotheken von Drittanbietern verwenden, um Cookies zu implementieren. Die Sitzung in React kann über serverseitige Sitzungen oder tokenbasierte Authentifizierung implementiert werden. HttpOnly
und secure
Flags, Aktivierung von Sitzungen nach Ablauf und Token -Aktualisierung, Verschlüsselung sensibler Daten, Verwendung SameSite
Attribute und Trennung von Authentifizierung und Anwendungsstatus. In diesem Artikel werden Technologien und Best Practices für die Implementierung von Cookies und Sitzungen in React untersucht.
Cookies und Sitzung sind unverzichtbare Komponenten der Webentwicklung. Sie sind das Medium für die Verwaltung von Benutzerdaten, Authentifizierung und Status.
Cookies sind kleine Datenmengen (bis zu 4096 Bytes), die im Webbrowser auf dem Gerät des Benutzers gespeichert sind. Ein typischer Cookie sieht so aus (dies ist eine Google Analytics - _ga
- Cookie):
<code>名称:_ga 值:GA1.3.210706468.1583989741 域:.example.com 路径:/ 过期/最大年龄:2022-03-12T05:12:53.000Z</code>
Cookie ist nur eine Zeichenfolge mit Schlüsselwertpaaren.
"Sitzung" bezieht sich auf die Zeit, in der der Benutzer die Website durchbaut. Sie repräsentieren die kontinuierliche Aktivität des Benutzers über einen bestimmten Zeitraum.
In React können Cookies und Sitzungen uns helfen, robuste und sichere Anwendungen zu erstellen.
Die Grundlagen von Cookies und Sitzungen verstehen, ist die Grundlage für die Entwicklung dynamischer und benutzerorientierter Webanwendungen.
In diesem Abschnitt werden die Konzepte von Cookies und Sitzungen auf eingehende Weise untersucht und ihre Typen, Lebenszyklen und typischen Anwendungsfälle untersucht.
Cookies verwalten in mehreren Anforderungen hauptsächlich Statusdaten zwischen dem Client und dem Server. Mit Cookies können Sie Daten von Benutzernautomaten speichern und abrufen und ein personalisierteres/nahtloses Browsing -Erlebnis bieten.
Es gibt verschiedene Arten von Keksen, von denen jede perfekt für den beabsichtigten Anwendungsfall ist.
<code>名称:_ga 值:GA1.3.210706468.1583989741 域:.example.com 路径:/ 过期/最大年龄:2022-03-12T05:12:53.000Z</code>
<code class="language-javascript">// 示例:设置会话 Cookie document.cookie = "sessionID=abc123; path=/";</code>
<code class="language-javascript">// 示例:设置具有过期日期的持久性 Cookie document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/";</code>
<code class="language-javascript">document.cookie = "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; path=/";</code>
Sitzung stellt eine logische serverseitige Entität dar, die benutzerspezifische Daten während des Zugriffs speichert. Die Sitzung ist eng mit Cookies verwandt, wird jedoch auf unterschiedliche Weise gespeichert. (Cookie -Daten werden auf dem Server gespeichert.)
serverseitige Sitzung beinhaltet das Speichern von Sitzungsdaten auf dem Server. Frameworks wie express.js verwenden die serverseitige Sitzung, um den Benutzerstatus zu verwalten:
<code class="language-javascript">// 示例:在 Cookie 中存储用户偏好设置 document.cookie = "theme=dark; path=/";</code>
Client -Sitzung. Bei Verwendung von Client -Sitzungen müssen die Sitzung nicht replizieren, die Sitzung überprüfen oder den Datenspeicher zwischen Knoten abfragen. Obwohl "Client -Sitzung" möglicherweise auf die Sitzungspeicherinformationen auf dem Client verweist, umfasst dies normalerweise die Verwendung von Cookies zum Speichern von Sitzungskennungen:
<code class="language-javascript">// 使用 express-session 中间件 const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true, }));</code>
Verständnis der Feinheiten von Cookies und Sitzungen hilft dabei, dynamische und interaktive Webanwendungen zu erstellen.
Der nächste Abschnitt untersucht die tatsächliche Implementierung von Cookies und Sitzungen in React -Anwendungen.
Wie bereits erwähnt, sind Cookies eine grundlegende Komponente von Webprozessen und React -Anwendungen.
So implementieren Sie Cookies in React:
document.cookie
api document.cookie
api Die grundlegendste Möglichkeit, Cookies in React zu verwenden, ist die document.cookie
api. Es bietet eine einfache Schnittstelle zum Einstellen, Erhalten und Löschen von Cookies.
Cookies einstellen:
<code class="language-javascript">// 示例:在客户端的 Cookie 中存储 Session ID document.cookie = "sessionID=abc123; path=/";</code>
Holen Sie sich Cookies:
<code class="language-javascript">// 设置 Cookie 的函数 const setCookie = (name, value, days) => { const expirationDate = new Date(); expirationDate.setDate(expirationDate.getDate() + days); document.cookie = `${name}=${value}; expires=${expirationDate.toUTCString()}; path=/`; }; // 示例:设置一个在 7 天后过期的用户名 Cookie setCookie("username", "john_doe", 7);</code>
Cookie löschen:
<code class="language-javascript">// 按名称获取 Cookie 值的函数 const getCookie = (name) => { const cookies = document.cookie .split("; ") .find((row) => row.startsWith(`${name}=`)); return cookies ? cookies.split("=")[1] : null; }; // 示例:获取“username” Cookie 的值 const username = getCookie("username");</code>
Erstellen Sie einen benutzerdefinierten React-Hook, um die kookiebezogenen Funktionen zu verkapseln, damit er zwischen den Komponenten wiederverwendet werden kann:
<code class="language-javascript">// 按名称删除 Cookie 的函数 const deleteCookie = (name) => { document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`; }; // 示例:删除“username” Cookie deleteCookie("username");</code>
Dieser benutzerdefinierte Hook useCookie
gibt den aktuellen Wert des Cookies zurück, die Funktion, die den neuen Wert festlegt, und die Funktion, die das Cookie löscht.
Bibliotheken von Drittanbietern wie JS-Cookies vereinfachen das Cookie-Management in React-Anwendungen.
Installationsbibliothek:
<code class="language-javascript">// useCookie.js import { useState, useEffect } from "react"; const useCookie = (cookieName) => { const [cookieValue, setCookieValue] = useState(""); useEffect(() => { const cookie = document.cookie .split("; ") .find((row) => row.startsWith(`${cookieName}=`)); setCookieValue(cookie ? cookie.split("=")[1] : ""); }, [cookieName]); const setCookie = (value, expirationDate) => { document.cookie = `${cookieName}=${value}; expires=${expirationDate.toUTCString()}; path=/`; }; const deleteCookie = () => { document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`; }; return [cookieValue, setCookie, deleteCookie]; }; // 在 React 组件中的用法 const [username, setUsername, deleteUsername] = useCookie("username");</code>
Verwendung in React -Komponenten:
<code>名称:_ga 值:GA1.3.210706468.1583989741 域:.example.com 路径:/ 过期/最大年龄:2022-03-12T05:12:53.000Z</code>
Die Verwendung von Bibliotheken von Drittanbietern wie JS-Cookies bietet eine einfache und bequeme API für die Cookie-Verwaltung in React-Komponenten.
Verständnis dieser verschiedenen Ansätze hilft uns, die zu wählen, die den Bedürfnissen und Komplexität unserer React -Anwendungen am besten entspricht.
In React -Anwendungen funktioniert die Sitzung auf der Serverseite, während die Sitzungskennungen Cookies verwenden, um auf der Client -Seite zu arbeiten.
Die Methoden zur Implementierung der Sitzung umfassen:
serverseitige Sitzung umfasst das Speichern von Sitzungsdaten auf dem Server. In React bedeutet dies, serverseitige Frameworks wie Express.js und Session Management Middleware zu verwenden.
setze Express.js mit Express-Session: Installieren Sie zunächst das erforderliche Paket:
<code class="language-javascript">// 示例:设置会话 Cookie document.cookie = "sessionID=abc123; path=/";</code>
Konfigurieren Sie nun Express:
<code class="language-javascript">// 示例:设置具有过期日期的持久性 Cookie document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/";</code>
secret
Wird verwendet, um Sitzungs -ID -Cookies zu signieren und eine zusätzliche Sicherheitsebene hinzuzufügen.
Verwenden Sie die Sitzung im Routing: Nach der Konfiguration der Sitzung können wir sie in der Route verwenden:
<code class="language-javascript">document.cookie = "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; path=/";</code>
Nach erfolgreichem Anmeldung werden Benutzerinformationen in der Sitzung gespeichert. Diese Informationen können durch nachfolgende Anfragen für die /profile
Route zugegriffen werden.
Token-basierte Authentifizierung ist eine Möglichkeit, Sitzungen in modernen React-Anwendungen zu verwalten. Dazu gehört es, ein Token nach erfolgreicher Authentifizierung auf dem Server zu generieren, an den Client zu senden und es in den Header der nachfolgenden Anfragen aufzunehmen.
Token generieren und senden: Auf der Serverseite:
<code class="language-javascript">// 示例:在 Cookie 中存储用户偏好设置 document.cookie = "theme=dark; path=/";</code>
Der Server generiert einen JWT (JSON -Web -Token) und sendet ihn an den Client.
Token in die Anfrage einbeziehen: Auf dem Client (reagieren):
<code class="language-javascript">// 使用 express-session 中间件 const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true, }));</code>
Das obige verwendet den React -Kontext, um den Authentifizierungsstatus zu verwalten. Die Funktion login
aktualisiert den Status mit dem empfangenen Token.
Token in Anfrage verwenden: Geben Sie es mit dem Token in den Header der Anfrage ein:
<code class="language-javascript">// 示例:在客户端的 Cookie 中存储 Session ID document.cookie = "sessionID=abc123; path=/";</code>
Bei Anfrage bei Axios wird das Token automatisch zum Header hinzugefügt.
Beide Methoden helfen uns, unsere Sitzung effektiv zu verwalten und eine sichere und nahtlose Erfahrung zu bieten.
Handhabungssitzungen und Cookies in React-Anwendungen sind für die Erstellung sicherer, benutzerfreundlicher und leistungsstarker Webanwendungen von wesentlicher Bedeutung.
Um sicherzustellen, dass unsere React -Anwendung korrekt funktioniert, tun Sie Folgendes.
HttpOnly
geben Sie gegebenenfalls die secure
und HttpOnly
. Diese Flagge verhindert Angriffe auf Cookies über JavaScript oder einen anderen böswilligen Code, wodurch das Risiko von XSS-Angriffen (Cross-Site-Skripten) verringert wird. Es stellt sicher, dass Cookies nur vom Server zugänglich sind: <code>名称:_ga 值:GA1.3.210706468.1583989741 域:.example.com 路径:/ 过期/最大年龄:2022-03-12T05:12:53.000Z</code>
secure
. Diese Flagge stellt sicher, dass Cookies nur über sichere verschlüsselte Verbindungen (HTTPS) gesendet werden. Es kann das Risiko von böswilligem Benutzerabfangen abschwächen: <code class="language-javascript">// 示例:设置会话 Cookie document.cookie = "sessionID=abc123; path=/";</code>
Implementieren Sie für erweiterte Sicherheit die Ablauf des Sitzungssitzes und die Token -Aktualisierungseigenschaften. Das regelmäßige Auffrischen des Tokens oder die Festlegung der Ablaufzeit der Sitzung kann dazu beitragen, das Risiko eines nicht autorisierten Zugangs zu verringern.
<code class="language-javascript">// 示例:设置具有过期日期的持久性 Cookie document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/";</code>
/login
Der Endpunkt gibt nach erfolgreicher Authentifizierung das anfängliche JWT -Token zurück. /refresh-token
Der Endpunkt verwendet das Aktualisierungstoken, um ein neues Zugriffstoken zu generieren.
Vermeiden Sie es, vertrauliche Informationen direkt in Cookies oder Sitzungen zu speichern. Um sensible Daten unter unvermeidlichen Umständen beizubehalten, verschlüsseln Sie sie vor dem Speichern. Die Verschlüsselung fügt eine zusätzliche Sicherheitsebene hinzu, die es schwieriger macht, auf vertrauliche Informationen zuzugreifen, auch wenn böswillige Benutzer Daten abfangen:
<code class="language-javascript">document.cookie = "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; path=/";</code>
SameSite
Eigenschaften SameSite
hilft, Angriffe (CSRF) für die Anforderung (CSRF) zu verhindern, indem angegeben wird, wann Cookies zusammen mit Cross-Site-Anfragen gesendet werden.
Strict
. Cookies werden nur in einem First-Anbieter-Kontext gesendet, um zu verhindern, dass Websites von Drittanbietern im Namen der Benutzer Anfragen stellen. <code class="language-javascript">// 示例:在 Cookie 中存储用户偏好设置 document.cookie = "theme=dark; path=/";</code>
Lax
. Erlauben Sie uns, Cookies mithilfe der Navigation auf höchster Ebene zu senden (z.
<code class="language-javascript">// 使用 express-session 中间件 const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true, }));</code>
<code class="language-javascript">// 示例:在客户端的 Cookie 中存储 Session ID document.cookie = "sessionID=abc123; path=/";</code>Verwenden Sie Bibliotheken von Drittanbietern für Cookie Management
API abstrahiert: document.cookie
<code class="language-javascript">// 设置 Cookie 的函数 const setCookie = (name, value, days) => { const expirationDate = new Date(); expirationDate.setDate(expirationDate.getDate() + days); document.cookie = `${name}=${value}; expires=${expirationDate.toUTCString()}; path=/`; }; // 示例:设置一个在 7 天后过期的用户名 Cookie setCookie("username", "john_doe", 7);</code>verwandte Aktualisierungen zu Abhängigkeiten
Testsicherheitsmaßnahmen
Cookies und Sitzung sind nützliche Werkzeuge zum Erstellen sicherer und effizienter React -Anwendungen. Sie werden verwendet, um die Benutzerauthentifizierung zu verwalten, Benutzerpräferenzen zu bewahren oder staatliche Interaktionen zu ermöglichen.
Wenn wir Best Practices befolgen und bewährte Bibliotheken verwenden, können wir robuste und zuverlässige Anwendungen erstellen, die eine nahtlose Benutzererfahrung bieten und gleichzeitig die Sicherheit priorisieren.
Wenn Ihnen dieser Artikel gefällt, lesen Sie bitte andere aufregende Ressourcen von SitePoint:
Das obige ist der detaillierte Inhalt vonKekse und Sitzungen in React verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!