返回介绍

Cookie 的使用

发布于 2024-01-18 21:56:11 字数 2396 浏览 0 评论 0 收藏 0

cookie 和 session 的使用依赖于当前使用的平台,如:express 和 fastify 两种的使用方式不同,这里主要记录基于express平台的用法

cookie 可以用来存储用户信息,存储购物车等信息,在实际项目中用的非常多

npm instlal cookie-parser --save 
npm i -D @types/cookie-parser --save

引入注册

// main.ts

import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import * as cookieParser from 'cookie-parser'

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  
  //注册 cookie
  app.use(cookieParser('dafgafa'));  //加密密码
  
  await app.listen(3000);
}
bootstrap();

接口中设置 cookie 使用 response

请求该接口,响应一个 cookie

@Get()
index(@Response() res){
    //设置 cookie, signed:true 加密
    //参数:1:key, 2:value, 3:配置
    res.cookie('username', 'poetry', {maxAge: 1000 * 60 * 10, httpOnly: true, signed:true})
    
    //注意:
    //使用 res 后,返回数据必须使用 res
    //如果是用了 render 模板渲染,还是使用 return
    res.send({xxx})
}

cookie 相关配置参数

  • domain String 指定域名下有效
  • expires Date 过期时间(秒),设置在某个时间点后会在该 cookoe 后失效
  • httpOnly Boolean 默认为 false 如果为 true 表示不允许客户端(通过 js 来获取 cookie )
  • maxAge String 最大失效时间(毫秒),设置在多少时间后失效
  • path String 表示 cookie 影响到的路径,如: path=/ 如果路径不能匹配的时候,浏览器则不发送这个 cookie
  • secure Boolean 当 secure 值为 true 时, cookie 在 HTTP 中是无效,在 HTTPS 中才有效
  • signed Boolean 表示是否签名 cookie ,如果设置为 true 的时候表示对这个 cookie 签名了,这样就需要用 res.signedCookies() 获取值 cookie 不是使用 res.cookies()

获取 cookie

@Get()
index(@Request() req){
      console.log(req.cookies.username)
      
      //加密的 cookie 获取方式
      console.log(req.signedCookies.username)  
      return req.cookies.username
}

Cookie 加密

// 配置中间件的时候需要传参
app.use(cookieParser('123456'));

// 设置 cookie 的时候配置 signed 属性
res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true});

// signedCookies 调用设置的 cookie
console.log(req.signedCookies);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文