Skip to content

数据操作- Cookie、Session

配置

js
// config.default.js
// session 使用

config.session = {
  key: "EGG_SESS",
  maxAge: 24 * 3600 * 1000, // 1天
  httpOnly: true, //是否只能在服务器端修改
  encrypt: true, //是否加密
  renew: true, //每次访问页面是否自动续期
};

新建路由文件

js
const ModuleD = (router, controller) => {
  router.post("/addcookie", controller.cookie.add);
  router.post("/delcookie", controller.cookie.del);
  router.post("/editorcookie", controller.cookie.editor);
  router.post("/showcookie", controller.cookie.show);
};

module.exports = ModuleD;

新建控制器文件

js
const { Controller } = require("egg");

class CookieController extends Controller {
  async add() {
    const { ctx } = this;
    ctx.cookies.set("user", "技术测试", {
      // 最大时间
      //maxAge: 1000 * 200,
      // 是否加密, 加密允许中文 。不加密中文报错
      encrypt: true,
      expires: new Date("2025-09-27 21:00:00"),
    });
    ctx.session.username = "测试session";
    ctx.body = {
      status: 200,
      message: "Cookie添加成功",
    };
  }
  async del() {
    const { ctx } = this;
    ctx.cookies.set("user", null);
    ctx.session.username = null;
    ctx.body = {
      status: 200,
      message: "Cookie删除成功",
    };
  }
  async editor() {
    const { ctx } = this;
    ctx.cookies.set("user", "hahahha");
    ctx.session.username = "测试修改session";
    ctx.body = {
      status: 200,
      message: "Cookie修改成功",
    };
  }
  async show() {
    const { ctx } = this;
    // 取出来的时候也得后面加密取
    const result = ctx.cookies.get("user", {
      encrypt: true,
    });
    console.log(result);
    console.log("session");
    console.log(ctx.session.username);
    ctx.body = {
      status: 200,
      message: "Cookie修改成功",
    };
  }
}

module.exports = CookieController;