数据操作- 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;