http.SetCookie 的无效内存地址
Invalid Memory Address with http.SetCookie
我正在开发一个名为 persona 的授权包。
除一件事外一切正常,当我尝试设置 cookie 时,我的内存地址无效。
func Signup(user interface{}, username string, w http.ResponseWriter) error {
key := []byte(randStringBytes(32))
encrypted, err := encrypt(key, username)
if err != nil {
return err
}
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Name: "session-persona", Value: encrypted, Expires: expiration}
http.SetCookie(w, &cookie)
userSession := Session{Username: username, Key: key, Token: encrypted}
database.Create(&userSession)
database.Create(user)
return nil
}
当我删除 http.SetCookie(w, &cookie)
时一切正常。
你有什么想法吗?
我认为问题可能不是 http.Cookie
对象,而是 ResponseWriter
对象(因为 ResponseWriter
是一个接口)。为了进行调试,请在设置 Cookie 之前尝试检查 nil
。如果它是 nil
,您可能必须从“注册”中查找堆栈以找出原因 - 也许它已经关闭。
我正在开发一个名为 persona 的授权包。
除一件事外一切正常,当我尝试设置 cookie 时,我的内存地址无效。
func Signup(user interface{}, username string, w http.ResponseWriter) error {
key := []byte(randStringBytes(32))
encrypted, err := encrypt(key, username)
if err != nil {
return err
}
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Name: "session-persona", Value: encrypted, Expires: expiration}
http.SetCookie(w, &cookie)
userSession := Session{Username: username, Key: key, Token: encrypted}
database.Create(&userSession)
database.Create(user)
return nil
}
当我删除 http.SetCookie(w, &cookie)
时一切正常。
你有什么想法吗?
我认为问题可能不是 http.Cookie
对象,而是 ResponseWriter
对象(因为 ResponseWriter
是一个接口)。为了进行调试,请在设置 Cookie 之前尝试检查 nil
。如果它是 nil
,您可能必须从“注册”中查找堆栈以找出原因 - 也许它已经关闭。