Estoy tratando de implementar la autorización JWT con accessToken y refreshToken. Tanto el token de acceso como el token de actualización deben establecerse en una cookie de solo HTTP.
Probé este código pero no está configurando cookies. Estoy usando el marco NestJS aquí.
import { Controller, Request, Post, Body, Response } from '@nestjs/common'; @Controller() export class UserController { constructor() {} @Post('users/login') async login( @Request() req, @Body() credentials: { username: string; password: string }, @Response() res, ) { try { // Login with username and password const accessToken = 'something'; const refreshToken = 'something'; const user = { username: credentials.username }; res.cookie('accessToken', accessToken, { expires: new Date(new Date().getTime() + 30 * 1000), sameSite: 'strict', httpOnly: true, }); return res.send(user); } catch (error) { throw error; } } }El método res.send () funciona bien. Obtengo datos en respuesta. ¿Cómo puedo configurar una cookie aquí?
Este es mi archivo main.ts: -
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { Logger } from '@nestjs/common'; import { AuthenticatedSocketIoAdapter } from './chat/authchat.adapter'; import * as cookieParser from 'cookie-parser'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors(); app.use(cookieParser()); app.useWebSocketAdapter(new AuthenticatedSocketIoAdapter(app)); await app.listen(3000); Logger.log('User microservice running'); } bootstrap();Y para obtener la cookie que estoy usando: -
request.cookiesConversación en los comentarios:
Axios, en el lado del cliente, debe tener withCredentials establecido en true para enviar las cookies al servidor. El servidor estaba enviando y configurando las cookies como se esperaba.