express中间件cookie-parser的使用

cookie-parser

一.cookie未加密

1.安装cookie-parser中间件

npm install --save-dev cookie-parser

2.引入cookie-parser

//express框架
const express=require("express");
//引入一个框架实例
const app=express();
//引入cookie-parser
const cookieParser=require("cookie-parser");
app.use(cookieParser());

3.设置cookie

样板模式为:

res.cookies('key','value',option)

其中option要求是要json格式,有以下选项:

  • domain: 域名。设置子域名(二级域名)是否可以访问cookie。
  • name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样。
  • expires: 过期时间(秒),在设置的某个时间点后该Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT
  • maxAge:最大失效时间(毫秒),设置在多少时间后失效、
  • secure: 当 secure 值为 true 时, cookie 在 HTTP 中是无效,在 HTTPS 中才有效 path: 表示 cookie 影响到的路由,如 path=/。如果路径不能匹配时,浏览器则不发送这个 Cookie
  • httpOnly:默认为false,建议设置为true, 客户端将无法通过document.cookie读取到 COOKIE 信息,可防止XSS 攻击产生
  • signed: 表示是否签名(加密) cookie, 设为 true 会对这个 cookie 签名

实例:
是在router.js路由文件:

const express = require("express");
const router = express.Router();
//.....

moudle=exports=router

设置cookies

router.get("/sendData", (req, res) => {
    
    
    //写入缓存
    let str = "周日"
    console.log(str);  //输出结果为周日
    res.cookie('_user',str, {
    
    
        //最大失效时间
        maxAge: 1000 * 60 * 60 * 24 * 2,
        //路径
        path: '/',
    });
    res.send("写入缓存");
});

显示结果:
在这里插入图片描述

4.读取cookie 通过 req.cookies.(注意是req)

router.get("/getcookie", (req, res) => {
    
    
    //未加密使用下面这个读取
    res.send(req.cookies['_user']);
});

显示结果:
在这里插入图片描述

二.cookie 的加密

出于安全的考虑,通常需要对cookie进行签名
设置cookie时,将signed设置为true,表示对cookie进行签名。

1.在配置中间件时传参

//引入cookie-parser
const cookieParser=require("cookie-parser");
app.use(cookieParser('abc'));   //括号内随意填写字符串 都是可以的

2.设置cookie时,要把有signed属性设为true

router.get("/sendData", (req, res) => {
    
    
    //写入缓存
    let str = "加密的周日"  //数据
    console.log(str);  //输出结果为周日
    res.cookie('_user',str, {
    
    
        //最大失效时间
        maxAge: 1000 * 60 * 60 * 24 * 2,
        //路径
        path: '/',
        signed:true; //加密属性
    });
    res.send("写入缓存");
});

加密后显示结果:
在这里插入图片描述

3.读取cookie 通过 req.signedCookies.(注意是req)

router.get("/getcookie", (req, res) => {
    
    
    //加密后使用
    res.send(req.signedCookies['_user']);
});

显示结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47863547/article/details/119520386
今日推荐