Hey Entwickler! Ich habe kürzlich in meinem Projekt, E-Commerce-Smoky-Omega.vercel.App, mit dem Cookie-Management geraten und dachte, ich würde meine Erkenntnisse teilen. Lassen Sie uns Kekse intelligent arbeiten!
Ein Cookie ist ein kleines Datenpaket, das von einem Server an den Browser eines Benutzers gesendet wird. Browser speichern, erstellen, ändern und geben diese mit nachfolgenden Anforderungen an den Server an. Dies ist entscheidend für das Sitzungsmanagement, die Personalisierung und die Verfolgung.
Stellen Sie sich Cookies als kleine Anmerkungen vor, die Ihr Server im Browser des Benutzers hinterlässt. Sie sind perfekt, um Benutzer angemeldet zu halten oder sich an ihre Vorlieben zu erinnern.
<code class="language-javascript">const options = { httpOnly: true, secure: true, sameSite: "none" }; return res .status(200) .cookie("accessToken", accessToken, options) .cookie("refreshToken", refreshToken, options) .json( new Apiresponse( 200, { user: loggedInUser }, "User logged in successfully" ) );</code>
Dieses Beispiel zeigt das Einstellen von zwei Cookies: ein Zugriffstoken (kurzfristige Authentifizierung) und ein Aktualisierungstoken (zum Erhalten neuer Zugriffstoken). Das Objekt options
konfiguriert wichtige Sicherheitsparameter:
httpOnly: true
: verhindert den Client-Seiten-JavaScript-Zugriff, mildern XSS-Angriffe. secure: true
: stellt sicher, dass Cookies nur über https gesendet werden. sameSite: "none"
: Ermöglicht Cookies in Cross-Origin-Anfragen (wichtig für die Kommunikation mit Frontend-Backend). Ich hatte zunächst mit dieser Einstellung zu kämpfen. <code class="language-javascript">const loginResponse = await axios.post( `${base_URL}/api/v1/users/signin`, { email, password }, { withCredentials: true } ); if (loginResponse.data.data) { const userResponse = await axios.get( `${base_URL}/api/v1/users/getuser`, { withCredentials: true } // Automatically sends cookies ); }</code>
Nach einer erfolgreichen Anmeldung (Server sendet Cookies), sendet withCredentials: true
in der clientseitigen Anforderung den Browser zum Abrufen von Benutzerdaten an den Server zurück an den Server. Einfach, richtig?
<code class="language-javascript">const options = { expires: new Date(Date.now() + 24 * 60 * 60 * 1000), // Expires in 24 hours maxAge: 24 * 60 * 60 * 1000, // Alternative expiry (milliseconds) domain: '.example.com', // All subdomains path: '/', // Entire domain };</code>
expires
vs maxAge
: Verwenden Sie einen, nicht beides. maxAge
(Millisekunden seitdem) wird im Allgemeinen bevorzugt. domain
: Verwenden Sie vorsichtig aufgrund von Sicherheitsauswirkungen. Nur einstellen, wenn der Zugang zum Subdomänen benötigt wird. sameSite
: strict
(am sichersten, begrenzt die Querstelle), lax
(guter Standard), none
(erfordert secure: true
). signed
: erfordert einen serverseitigen geheimen Schlüssel. partitioned
: Eine neuere Datenschutzfunktion, die nicht allgemein unterstützt wird. Das ist es! Hoffe das hilft. Dies ist mein erster Artikel, also ist Feedback willkommen!
Das obige ist der detaillierte Inhalt vonSchnelle Cookie -Management -Tipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!