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

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

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

Go
ibeautiful 2022-07-11 14:31:43
我找到了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 框架,但这不应该改变任何东西。
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

SecureCookie 所做的唯一一件事就是将您的令牌值转换为编码字符串。然后,在将 cookie 设置为客户端时,您可以将其视为令牌的新值。


可以使用Encode任何数据类型,不一定必须是 a map[string]string,您可以直接将 jwt 令牌传递给它。


encoded, err := s.Encode("jwt-token", "value.of.jwt.token.here")

之后,不能比示例中的键值格式更简单:


    cookie := &http.Cookie{

        Name:     "jwt-token", // <- should be any unique key you want

        Value:    encoded, // <- the token after encoded by SecureCookie

        Path:     "/",

        Secure:   true,

        HttpOnly: true,

    }

    http.SetCookie(w, cookie)

当您想再次验证令牌时,请记住encoded使用正确的密钥对 cookie进行解码。jwt-token


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

添加回答

举报

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