ทดสอบการใช้ Cookie Session ใน Negroni
Fri, 17 July 2015 golang

การใช้ Cookie ในเวบแอป เป็นเรื่องที่ปกติมาก ๆ และใช้บ่อย ๆ เลยอยากเขียนตัวอย่างการใช้งาน Cookie Session แบบง่าย ๆ ที่ใช้ร่วมกับ Negroni ดังนี้ครับ

File : web.go

package main

import (
  "fmt"
  "runtime"
  "net/http"
  "github.com/goincremental/negroni-sessions"
  "github.com/goincremental/negroni-sessions/cookiestore"
  "github.com/codegangsta/negroni"
  "github.com/gorilla/mux"
)

func setData(w http.ResponseWriter, req *http.Request) {
  vars := mux.Vars(req)
  sess := sessions.GetSession(req)
  sess.Set(vars["name"], vars["data"])
  fmt.Fprintf(w, "Set %s to %s", vars["name"], vars["data"])
}

func getData(w http.ResponseWriter, req *http.Request) {
  vars := mux.Vars(req)
  sess := sessions.GetSession(req)
  data := sess.Get(vars["name"])
  switch data.(type) {
    case string: fmt.Fprintf(w, "Get %s is %s", vars["name"], data.(string))
    default: fmt.Fprintf(w, "Cannot get %s", vars["name"])
  }
}

func main() {
  runtime.GOMAXPROCS(4)
  r := mux.NewRouter()

  r.HandleFunc("/set/{name}/{data}", setData)
  r.HandleFunc("/get/{name}", getData)

  store := cookiestore.New([]byte("This is very secret key"))

  store.Options(sessions.Options{
    Path:  "/",
    Domain: "",
    MaxAge: 10,
    Secure: false,
    HTTPOnly: false,
  })

  n := negroni.New(negroni.NewRecovery(), negroni.NewStatic(http.Dir("public")))
  n.Use(sessions.Sessions("MyApp", store))
  n.UseHandler(r)
  n.Run(":8400")
}

หลังจาก compile แล้วก็ทดลองเล่นกันได้เลยค้าฟฟฟ

comments powered by Disqus