将 JWT 存储在 httpOnly cookie 中的最佳方法

我找到了SecureCookie模块,我想用它在 httpOnly Cookie 中存储 JWT 令牌(访问和刷新),以便在 REST API 中使用。


下面的代码是从上面提到的官方 Github 页面中引用的——我不确定“值字符串映射”是什么意思:


func SetCookieHandler(w http.ResponseWriter, r *http.Request) {

    value := map[string]string{

        "foo": "bar",

    }

    if encoded, err := s.Encode("cookie-name", value); err == nil {

        cookie := &http.Cookie{

            Name:  "cookie-name",

            Value: encoded,

            Path:  "/",

            Secure: true,

            HttpOnly: true,

        }

        http.SetCookie(w, cookie)

    }

}

换句话说:我应该在哪里保存我的代币?它们会转到“值”字符串映射,还是应该是在编码函数之后创建的“cookie”对象中的属性?


顺便提一下:我也在使用 Gin 框架,但这不应该改变任何东西。


ibeautiful
浏览 97回答 1
1回答

噜噜哒

SecureCookie 所做的唯一一件事就是将您的令牌值转换为编码字符串。然后,在将 cookie 设置为客户端时,您可以将其视为令牌的新值。可以使用Encode任何数据类型,不一定必须是 a map[string]string,您可以直接将 jwt 令牌传递给它。encoded, err := s.Encode("jwt-token", "value.of.jwt.token.here")之后,不能比示例中的键值格式更简单:&nbsp; &nbsp; cookie := &http.Cookie{&nbsp; &nbsp; &nbsp; &nbsp; Name:&nbsp; &nbsp; &nbsp;"jwt-token", // <- should be any unique key you want&nbsp; &nbsp; &nbsp; &nbsp; Value:&nbsp; &nbsp; encoded, // <- the token after encoded by SecureCookie&nbsp; &nbsp; &nbsp; &nbsp; Path:&nbsp; &nbsp; &nbsp;"/",&nbsp; &nbsp; &nbsp; &nbsp; Secure:&nbsp; &nbsp;true,&nbsp; &nbsp; &nbsp; &nbsp; HttpOnly: true,&nbsp; &nbsp; }&nbsp; &nbsp; http.SetCookie(w, cookie)当您想再次验证令牌时,请记住encoded使用正确的密钥对 cookie进行解码。jwt-token
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go