golang从0到1实战系统五十九:Go 如何使用 session
在Go中,我们可以使用net/http/session
包来管理用户会话。以下是一个使用Go标准库net/http
和github.com/gorilla/sessions
包来管理session的简单示例。
首先,你需要安装gorilla/sessions
包:
go get github.com/gorilla/sessions
然后,你可以使用以下代码来设置和获取session:
package main
import (
"net/http"
"github.com/gorilla/sessions"
)
var (
// 必须是安全的,不能公开访问
store = sessions.NewFilesystemStore("./tmp", securecookie.GenerateRandomKey(32), securecookie.GenerateRandomKey(32))
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 获取一个session
session, _ := store.Get(r, "session-name")
// 设置session值
session.Values["foo"] = "bar"
session.Save(r, w) // 保存session值
// 获取session值
foo := session.Values["foo"]
http.Error(w, "Session value for 'foo': "+fmt.Sprint(foo), http.StatusOK)
})
http.ListenAndServe(":8080", nil)
}
在这个例子中,我们创建了一个store
来存储session数据。store
使用文件系统存储session数据,并且需要两个安全密钥来加密session数据。
当客户端请求根路径/
时,我们从store
中获取一个session,并设置一个名为foo
的值。然后我们保存session并在响应中返回foo
的值。
请注意,这只是一个简单的示例,实际应用中你需要处理错误,并确保密钥的安全性。
评论已关闭