Koa 基础篇(四)—— Cookie 与 Session

Cookie

Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个 Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于 Cookie 具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的 CGI 等程序。—— 摘自百度百科

简而言之,cookie 是用于保存当前客户端与某个网站的信息,从本质上看,它由一个个的键值对组成。

Koa 中使用 cookie 是很简单的,因为 ctx 对象中本身就提供了 API 用于操作 cookie

设置 cookie

ctx.cookies.set(name,value,option)

其中,参数 option 是一个配置对象,用于配置这个 cookie 的属性。可选项:

  • maxAge —— 最大生命周期,单位毫秒。
  • expires —— 过期的日期时间。
  • path —— cookie 的路径
  • domain —— cookie 域名
  • secure —— 默认值为 false,如果置为 true 则表示只有 https 协议可以访问。

示例:

router.get("/login",async (ctx,next) => {
    ctx.cookies.set("username","jonas",{
        maxAge:Date.now() + 10000,
    })
    ctx.body = "login success"
})

读取 cookie

ctx.cookies.get(key)

示例:

router.get("/home",async (ctx,next) => {
    console.log(ctx.cookies.get("username"))
    ctx.body = "this is home page"
})

注意:一般情况都不要使用明文设置 cookie ,而是对 cookie 进行编码。

Session

session 是另一种记录客户端状态的机制,不同的是,cookie 保存在客户端浏览器中,而 session 保存在服务器上。

Koa 中使用 session 就需要使用第三方的依赖了。

  1. 安装
npm install --save koa-session
  1. 引入
const session = require("koa-session")
app.keys = ['some secret hurr'];
const config = {
    key: "koa:sess", //key(使用默认值即可)
    maxAge: 86400000, //过期时间,默认为1天
    overwrite: true, //是否可覆盖,默认为true
    httpOnly:true,
    signed:true,
    rolling:false,//是否在每次请求时重新计算过期时间
    renew:false
}
app.use(session(config,app))
  1. 基本使用
router.get("/home",async (ctx,next) => {
    console.log(ctx.session.username)
    ctx.body = "this is home page"
})

router.get("/login",async (ctx,next) => {
    ctx.session.username = "jonas"
    ctx.body = "login success"
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章