我正在研究一个名为“角色”的身份验证包。
除一件事情外,所有东西都可以正常工作,当我尝试设置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)
后,一切正常。
你有什么主意吗?
答案 0 :(得分:2)
我认为问题可能不是http.Cookie
对象,而是ResponseWriter
对象(因为ResponseWriter
是一个接口)。为了进行调试,请在设置Cookie之前尝试检查其nil
。如果是nil
,则可能需要从“注册”中查找堆栈,以查明原因-也许它已经关闭了。