我正在开发一个名为 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
是一个接口(interface))。为了进行调试,请在设置 Cookie 之前尝试检查它是否为 nil
。如果它是 nil
,您可能需要从“Signup”中查找堆栈来找出原因——也许它已经被关闭了。
关于go - 带有 http.SetCookie 的无效内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459475/