package main import ( "fmt" "log" "flag" "net/http" "github.com/andreadipersio/securecookie" ) const ( secret = "ii!^avQiOkv)QXhQwQZ>JH!YY/q(v%hY" ) var ( port int ) func authHandler(w http.ResponseWriter, r *http.Request) { // http://golang.org/pkg/net/http/#Cookie cookie := &http.Cookie { Name: "token", Value: "foobar", } securecookie.SetSecureCookie(w, secret, cookie) } func rootHandler(w http.ResponseWriter, r *http.Request) { c, err := securecookie.GetSecureCookie(r, secret, "token") if err != nil || c.Value != "foobar" { http.Error(w, "You shall not pass", 401) return } fmt.Fprintf(w, "Access granted") } func init() { flag.IntVar(&port, "port", 8080, "HTTP Server Port") flag.Parse() } func main() { httpAddr := fmt.Sprintf(":%v", port) log.Printf("Listening to %v", httpAddr) // visit /auth to create a cookie http.HandleFunc("/auth", authHandler) // visit / to check cookie http.HandleFunc("/", rootHandler) log.Fatal(http.ListenAndServe(httpAddr, nil)) }