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"
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章