koa【10】 Koa2 session 的使用

const Koa = require("koa");
const router = require("koa-router")();
const render = require("koa-art-template");
const views = require("koa-views");
const static = require("koa-static");
const path = require("path");
const session = require("koa-session"); // 【步骤1:】

// 实例化Koa
const app = new Koa();

// 静态web资源 中间件配置
app.use(static("static"));

// session 中间件配置 【步骤2:】
app.keys = ["some secret hurr"];
const CONFIG = {
  key: "koa:sess", //cookie key (default is koa:sess)
  maxAge: 86400000, // cookie的过期时间 , 默认过期时间1天,单位毫秒,【需要修改】
  overwrite: true, //是否可以overwrite    (默认default true) ,设置没有效果,默认就行。
  httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true)
  signed: true, //签名默认true
  rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
  renew: true, //(boolean) renew session when session is nearly expired,即将过期的时候才重新设置,默认是 false ,正藏情况下设置为 true 。 【需要修改】
};
app.use(session(CONFIG, app));

// 腾讯 koa-art-template 模板引擎配置
render(app, {
  root: path.join(__dirname, "view"),
  extname: ".html",
  debug: process.env.NODE_ENV !== "production",
});

// 各个路由配置
router.get("/", async (ctx, next) => {
  let title = "这是首页";
  ctx.session.username = "张三22"; //设置session 【步骤3:】
  await ctx.render("index", { title });
});
router.get("/login", async (ctx) => {
  let title = "这是登录页面";
  console.log(ctx.session.username);
  let username = ctx.session.username; // 获取session 【步骤4:】
  await ctx.render("login", { title, username });
});
router.get("/news", async (ctx) => {
  let title = "这是新闻页面";
  console.log(ctx.session.username);
  let username = ctx.session.username;
  await ctx.render("news", { title, username });
});

// 启动路由
app.use(router.routes()).use(router.allowedMethods());

// 监听端口(首页的地址)
app.listen(3008);
console.log("http://127.0.0.1:3008");

 

posted @ 2021-02-08 14:35  半遮  阅读(156)  评论(0编辑  收藏  举报