我正在我的应用程序中进行用户身份验证,这是通过jwt保存的cookie完成的,当我发出请求时,客户端可以毫无问题地获取cookie,但是当客户端更新页面或仅f5时,cookie被删除,我正在调查它是否发生在localhost上或我的代码中存在问题, 但我没有找到与我的问题有关的任何东西。这是我在 Go 中的代码:func Login(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") u := model.User{} if err := json.NewDecoder(r.Body).Decode(&u); err != nil { http.Error(w, "format incorrect", http.StatusBadRequest) return } user, equals, err := u.AccessControll(u.Email, u.Password) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } if !equals { http.Error(w, "ups", http.StatusBadRequest) return } token, err := jwt.CreateToken(user) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } cookie := http.Cookie{ Name: "token", Value: token, Expires: time.Now().Add(5 * time.Minute), HttpOnly: true, } http.SetCookie(w, &cookie)}
1 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
浏览器默认将 Cookie 路径设置为请求路径。如果 Cookie 路径不是请求路径的路径前缀,则浏览器不会发送 Cookie。问题中的 cookie 仅针对对登录处理程序路径及其下方路径的请求进行设置。
将 Cookie 路径设置为“/”,以使 Cookie 在所有路径上都可用。
这可能不相关,但最好设置MaxAge而不是 Expires,因为MaxAge不受时钟偏差的影响。
cookie := http.Cookie{
Name: "token",
Value: token,
Path: "/",
MaxAge: 5 * 60,
HttpOnly: true,
}
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消