如何在NestJS中设置仅HTTP Cookie [英] How to set HTTP only cookie in NestJS

查看:0
本文介绍了如何在NestJS中设置仅HTTP Cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用accesToken和renhToken实现JWT授权。Access Token和刷新标记都需要在仅HTTP Cookie中设置。

我尝试了此代码,但它没有设置Cookie。我在这里使用的是NestJS框架。

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;
    }
  }
}

res.end()方法工作正常,我正在获取响应数据。如何在此处设置Cookie?

这是我的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();

要获取它使用的Cookie,请执行以下操作:-

request.cookies

推荐答案

评论中的对话:

在客户端,Axios需要将withCredentials设置为true才能将Cookie发送回服务器。服务器正在按预期发送和设置Cookie。

这篇关于如何在NestJS中设置仅HTTP Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆