手順
-
必要なパッケージのインストールする。
$ npm install csurf cookie-parser
-
ミドルウェアの設定を行う。
main.tsimport { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import * as csurf from 'csurf'; import * as cookieParser from 'cookie-parser'; async function bootstrap() { const app = await NestFactory.create(AppModule); // CookieParserミドルウェアを追加 app.use(cookieParser()); // CSRFミドルウェアを追加 app.use(csurf({ cookie: true })); await app.listen(3000); } bootstrap();
-
CSRFトークンを提供するエンドポイントの作成する。
app.controller.tsimport { Controller, Get, Req } from '@nestjs/common'; import { Request } from 'express'; @Controller() export class AppController { @Get('csrf-token') getCsrfToken(@Req() request: Request): any { // CSRFトークンを生成してレスポンスする return { csrfToken: request.csrfToken() }; } }
-
フロントエンドでCSRFトークンを含めてリクエストを送る。
以下のようなヘッダーを想定している。
CSRFトークンが含まれていない場合は403エラーを返します。
headers: {
"Content-Type": "application/json",
"CSRF-Token": csrfToken
}