为了账号安全,请及时绑定邮箱和手机立即绑定

如何保持饼干的价值

如何保持饼干的价值

Go
GCT1015 2022-09-05 15:49:58
我正在我的应用程序中进行用户身份验证,这是通过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,

}


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信