Estoy trabajando en la autenticación usando Next.js y Strapi. El cliente envía una solicitud de publicación con credenciales al servidor Next.js. Luego, el servidor envía una solicitud posterior a la API de Strapi, pasando las credenciales, para iniciar la sesión del usuario. El servidor obtiene un token JWT y lo configura como una cookie solo HTTP.
Mi pregunta es: ¿Cómo recibo también el JWT en el lado del cliente para buscar algo? No estoy muy seguro de cómo hacer esto.
El cliente envía una solicitud de publicación con credenciales al servidor:
// -- /pages/account/login.js const handleLogin = (e) => { e.preventDefault() axios.post("/api/login", { identifier: `${credentials.email}`, password: `${credentials.password}`, remember: stayLoggedIn, }) .then(response => { // I need to access the JWT here Router.push("/") response.status(200).end() }).catch(error => { console.log("Error reaching /api/login ->", error) }) }El servidor llama a la API de Strapi e inicia la sesión del usuario, recibe un token JWT y lo configura como una cookie:
// -- /pages/api/login.js export default (req, res) => { const {identifier, password, remember} = req.body; // Authenticate with Strapi axios.post(`${API_URL}/api/auth/local`, { identifier, password }) .then(response => { const jwt = response.data.jwt; // I need to pass this back to client console.log("Got token: ", jwt) // Set HTTPonly cookie if (remember === false) { res.setHeader( "Set-Cookie", cookie.serialize("jwt", jwt, { httpOnly: true, secure: process.env.NODE_ENV !== "development", maxAge: 60 * 60 * 24, // Logged in for 1 day sameSite: "strict", path: "/", }) ) } else { //... } console.log("Login successful") res.status(200).end() }) .catch(error => { console.log("Error logging in", error) res.status(400).end() }) }El JWT que el servidor recibe de la solicitud debe devolverse al cliente. ¿Cómo hago esto? Parece que estoy perdido... ¡Gracias!
Lo averigué. Solo puedo usar res.status(200).end(dataFromServer) . Sabía que era algo simple.