Siendo nuevo en sveltekit, he creado un formulario de inicio de sesión basado en realworldapp , que recibe el token JWT al iniciar sesión correctamente.
<script context="module"> export async function load({ session }) { if (session.user) { return { status: 302, redirect: '/' }; } return {}; } </script> <script> import { session } from '$app/stores'; import { goto } from '$app/navigation'; import { post } from '$lib/utils.js'; import { fade } from 'svelte/transition'; let username = ''; let password = ''; let errors = null; let message = ''; let hasError = false async function submit(event) { errors = response.errors; if (response.token) { $session.access_token = response.token.access_token; //how to save this token in a cookie? goto('/profile'); } else { message= response.message; hasError = true setTimeout(() => {hasError=false}, 5000); } } </script> <form on:submit|preventDefault={submit} > <h3 class="form-title">Login</h3> {#if hasError} <div transition:fade class="err-msg">{message}</div> {/if} <input type="text" bind:value={username} placeholder="username"> <input type="password" bind:value={password} placeholder="password"> <input type="submit" value="send"> </form>Funciona bien y puedo obtener el token en una respuesta como:
{ message: "successully logged in!" token: {access_token: 'eyJhbGciOiJIUzI1....' }Ahora, me pregunto cuál es la forma segura e idomática de guardar el token en una cookie y recuperarlo, de modo que el usuario no necesite autenticarse cada vez que abre el navegador.
Busqué en los documentos oficiales pero no pude encontrar ninguna pista al respecto. Tampoco pude encontrar un ejemplo de trabajo en un tutorial al respecto. De ahí la pregunta.
Su principal preocupación es "¿cómo guardo un valor en una cookie y luego lo recupero?"
Las cookies se almacenan en el navegador como una cadena que requiere análisis para leer o actualizar. Hay muchas bibliotecas en JavaScript para ayudarlo a hacer esto, una popular es js-cookie . Si bien no necesita una biblioteca, puede encontrarlo más conveniente que analizar la cadena usted mismo.
Un ejemplo básico de cómo escribir y leer una cookie es:
import Cookies from 'js-cookie' Cookies.set('name', 'value'); Cookies.get('name') // => 'value'También hay más opciones que puede configurar, como la ruta, la caducidad, etc.