nestjs cookie的配置和使用
- 安裝和配置
-
- 1. 安裝
- 2. 配置
- 3.設定cookie
- 4.擷取cookies
- cookie加密
安裝和配置
1. 安裝
npm install cookie-parser --save
2. 配置
2.1 main.ts 中引入 cookie-parser
import * as cookieParser from 'cookie-parser'
2.2. 在 main.ts 配置中間件
app.use(cookieParser());
3.設定cookie
res.cookie('username', 'aabbcc我是cookie', {maxAge: 1000*60*10, httpOnly: true})
4.擷取cookies
@Get('cookie')
getCookie(@Request() req){
console.log(req.cookies.username);
return req.cookies.username;
}
cookie加密
1.main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { join } from 'path';
import * as cookieParser from 'cookie-parser';
async function bootstrap() {
// ...
// 配置cookie中間件,()裡面寫上東西
app.use(cookieParser('this signed cookies'));
await app.listen(3000);
}
bootstrap();
2. 在article.controller中添加加密cookie
import { Controller, Get, Response } from '@nestjs/common';
@Controller('article')
export class ArticleController {
@Get()
index(@Response() res){
// 設定cookie,signed啟用加密
res.cookie('username', 'aabbcc我是cookie', {maxAge: 1000*60*10, httpOnly: true, signed: true})
// 注:res和return不能同時使用,否則卡死
// return '這是文章頁面';
res.send('這是文章頁面');
}
}
3.在user.controller中讀取cookie
import { Body, Controller, Get, Post, Render, Response, Request } from '@nestjs/common';
@Controller('user')
export class UserController {
// ...
// 擷取cookie
@Get('cookie')
getCookie(@Request() req){
// 1. 擷取普通cookie
// console.log(req.cookies.username);
// 2. 擷取加密cookie
console.log(req.signedCookies.username);
return req.signedCookies.username;
}
}