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
就需要使用第三方的依赖了。
- 安装
npm install --save koa-session
- 引入
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))
- 基本使用
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"
})