Cookies

曹阿宇發表於2020-05-30

Http cookie 是伺服器傳送到使用者web 瀏覽器的一小塊資料。 瀏覽器可以儲存這些資料並將其傳送回同一個伺服器,甚至在重新啟動瀏覽器之後(不像瀏覽器會話)。
Cookies 通常用於儲存使用者狀態(比如使用者是否登入)。

設定一個 Cookie

func MyHandler(c buffalo.Context) error {
  // ...
  c.Cookies().Set("user_id", user.ID, 30 * 24 * time.Hour)
  // ...
}

設定一個帶有過期的 Cookie

func MyHandler(c buffalo.Context) error {
  // ...
  exp := time.Now().Add(365 * 24 * time.Hour) // expire in 1 year
  c.Cookies().SetWithExpirationTime("user_id", user.ID, exp)
  // ...
}

使用 Path 設定 Cookie

func MyHandler(c buffalo.Context) error {
  // ...
  c.Cookies().SetWithPath("user_id", user.ID, "/user")
  // ...
}

高階設定 Cookie 方式

import "net/http"
func MyHandler(c buffalo.Context) error {
  // ...
  ck := http.Cookie{
    Name:    "token",
    Value:   token,
    Path:    "/",
    Expires: time.Now().Add(30 * 24 * time.Hour), // expire in 1 month
  }

  http.SetCookie(c.Response(), &ck)
  // ...
}

獲取Cookie

func MyHandler(c buffalo.Context) error {
  value, err := c.Cookies().Get("user_id")
  if err != nil {
    return err
  }
  return c.Render(200, r.String(value))
}

刪除 Cookie

func MyHandler(c buffalo.Context) error {
  c.Cookies().Delete("user_id")
  // ...
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

曹阿宇

相關文章