如何保持饼干的价值

我正在我的应用程序中进行用户身份验证,这是通过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)

}


GCT1015
浏览 78回答 1
1回答

红颜莎娜

浏览器默认将 Cookie 路径设置为请求路径。如果 Cookie 路径不是请求路径的路径前缀,则浏览器不会发送 Cookie。问题中的 cookie 仅针对对登录处理程序路径及其下方路径的请求进行设置。将 Cookie 路径设置为“/”,以使 Cookie 在所有路径上都可用。这可能不相关,但最好设置MaxAge而不是 Expires,因为MaxAge不受时钟偏差的影响。cookie := http.Cookie{    Name:     "token",    Value:    token,    Path:     "/",    MaxAge:   5 * 60,    HttpOnly: true,}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go