package main import ( "fmt" "github.com/gorilla/securecookie" "github.com/gorilla/sessions" "net/http" "os" ) // session密钥,建议长度为32或64 var sessionKey = securecookie.GenerateRandomKey(64) // session名称(即cookie的name),示例值:PHPSESSID、JSESSIONID var sessionName = "PHPSESSID" func GetFilesystemStore() *sessions.FilesystemStore { rootPath, _ := os.Getwd() storePath := rootPath + "/data/session" // session文件保存目录 return sessions.NewFilesystemStore(storePath, sessionKey) } func main() { //========== 设置session『浏览器访问http://IP地址:8081/SetSession』 ==========// http.HandleFunc("/SetSession", func(writer http.ResponseWriter, request *http.Request) { filesystemStore := GetFilesystemStore() session, _ := filesystemStore.Get(request, sessionName) session.Values["name"] = "张三" // 设置名为name的session,其值为张三 session.Values["age"] = 18 // 设置名为age的session,其值为18 session.Values["gender"] = "男" // 设置名为gender的session,其值为男 err := session.Save(request, writer) // 需要调用Save()才能保存设置的session if err == nil { fmt.Println("设置session成功") // 设置session成功 } else { fmt.Printf("设置session失败,原因:%+v \n", err.Error()) } }) //========== 获取session『浏览器访问http://IP地址:8081/GetSession』 ==========// http.HandleFunc("/GetSession", func(writer http.ResponseWriter, request *http.Request) { filesystemStore := GetFilesystemStore() session, _ := filesystemStore.Get(request, sessionName) name := session.Values["name"] // 获取名为name的session的值 age := session.Values["age"] // 获取名为age的session的值 gender := session.Values["gender"] // 获取名为gender的session的值 fmt.Printf("俺叫%v(%v),今年%v岁。 \n", name, gender, age) // 俺叫张三(男),今年18岁。 }) //========== 删除session『浏览器访问http://IP地址:8081/DelSession』 ==========// http.HandleFunc("/DelSession", func(writer http.ResponseWriter, request *http.Request) { filesystemStore := GetFilesystemStore() session, _ := filesystemStore.Get(request, sessionName) if session.Values["name"] != nil { session.Options.MaxAge = -1 err := session.Save(request, writer) // 需要调用Save()才能删除session if err == nil { fmt.Println("删除session成功") // 删除session成功 } else { fmt.Printf("删除session失败,原因:%+v \n", err.Error()) } } else { fmt.Println("session不存在,无需删除") } }) _ = http.ListenAndServe(":8081", nil) }
Copyright © 2024 码农人生. All Rights Reserved