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"
})