Gorrila 会话文件系统存储找不到会话文件



我开始使用golang和Angular2构建一个常规的Web应用程序,最重要的是,我正在尝试在 auth0.com 的帮助下保护我的登录。我从这里下载快速入门代码并尝试运行代码,它工作了一段时间,然后下次运行它时,再也找不到/tmp/session 文件了。

以下是 auth0.com 提供的代码的一些基本概念。
1. 初始化大猩猩会话文件系统存储
2.然后启动下面提供的认证过程
代码

app.go

var (
Store *sessions.FilesystemStore
)
func Init() error {
Store = sessions.NewFilesystemStore("", []byte("something-very-secret"))
gob.Register(map[string]interface{}{})
return nil
}

登录.go

func LoginHandler(w http.ResponseWriter, r *http.Request) {
domain := os.Getenv("AUTH0_DOMAIN")
aud := os.Getenv("AUTH0_AUDIENCE")
conf := &oauth2.Config{
ClientID:     os.Getenv("AUTH0_CLIENT_ID"),
ClientSecret: os.Getenv("AUTH0_CLIENT_SECRET"),
RedirectURL:  os.Getenv("AUTH0_CALLBACK_URL"),
Scopes:       []string{"openid", "profile"},
Endpoint: oauth2.Endpoint{
AuthURL:  "https://" + domain + "/authorize",
TokenURL: "https://" + domain + "/oauth/token",
},
}
if aud == "" {
aud = "https://" + domain + "/userinfo"
}
// Generate random state
b := make([]byte, 32)
rand.Read(b)
state := base64.StdEncoding.EncodeToString(b)
session, err := app.Store.Get(r, "state")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
session.Values["state"] = state
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
audience := oauth2.SetAuthURLParam("audience", aud)
url := conf.AuthCodeURL(state, audience)
http.Redirect(w, r, url, http.StatusTemporaryRedirect)
}

错误日志是

打开/tmp/session_46CNLLHBKD... : 没有这样的文件或目录

我尝试理解代码并发现错误日志来自login.go行39(会话,错误:=应用程序。Store.Get(r, "state"((。我开始追踪代码并找出答案。
login.go:39 -->store.go: 180-->session.go:132-->store.go:186-->store.go:272
您可以在此处找到store.go和session.go。
错误日志来自这一行:fdata,err := ioutil。ReadFile(文件名(
在整个过程中,我没有找到任何函数调用来保存会话文件。

我不明白这个错误,我不知道为什么我可以在一开始就运行代码,请帮助我解决这个问题。
您的任何建议将不胜感激。多谢。

我自己想出答案

事实证明,我在初始化大猩猩会话文件系统存储时更改了我的密钥,但我没有在 chrome 中删除我的 cookie 文件,因此它找不到所需的 tmp sesiion 文件。
我更改了密钥,然后删除了压缩的cookie文件,现在一切正常。

最新更新