go - 在 Go 中是否可以访问存储在客户端本地存储中的 JWT token ?

标签 go client local-storage server

我已经在后端实现了一个 SPA 应用程序,并且使用 Angular 可以很容易地授权存储在浏览器本地存储中的 token ,但在前端我使用服务器来呈现 html。

接下来,在来自服务器的 HTTP 请求处理程序上,我如何获取浏览器的本地存储/ session 存储来检索 token 、验证它并在响应中呈现允许的内容?

这甚至可能还是我必须使用 session ?

我在想,也许 http.client 有一些我看不到的方法,这可以帮助完成工作?

编辑 如果不可能,我发现了这个:http://www.gorillatoolkit.org/pkg/securecookie - 我试着用谷歌搜索了一下,但我想绝对确定这个 hmac 验证使这个解决方案至少与 JSON Web token 一样安全?

如果确实有人可以提出很好的论据,说明为什么应该在 session 中使用服务器资源,请与我分享(顺便说一句,我不关心旧浏览器 - 只关心性能和尽可能利用客户端,只要安全不受到损害)

最佳答案

有些人对你的问题投了反对票,所以把事情弄清楚可能会有所帮助:

  • 后端负责生成 html 并将其发送到用户服务器端;
  • 前端是最终用户在其浏览器(包括 javascript)中看到的内容 - 客户端。
  • 浏览器本地存储位于前端,因此后端 无法访问。您可以使用 cookie(存储在客户端,但发送到服务器端,反之亦然)——但仅此而已。
  • securecookie 是一种在客户端存储 cookie 的方式,除了您自己之外,任何人都无法更改/查看它们 - 因为它使用只有您(应该)知道的“ secret ”进行加密。
  • session 数据的优势在于,无需验证它是否为伪造 - 您是将数据放在那里的人,如果有人/某事确实伪造了 session 数据,那么您就得到了更大的问题。您还可以存储不希望最终用户/客户知道的内容。使用加密的 cookie 是实现此目的的替代方法。
    • 请注意,您也可以使用 session 数据来存储大型内容 - 如果有(可能有效但)奇怪的理由为最终用户存储 500MB 的 session 数据 blob,您不想将这 500MB 发送到最终用户。 session 数据保留在您的服务器上。

关于go - 在 Go 中是否可以访问存储在客户端本地存储中的 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515421/

相关文章:

java - 一个应用程序中的服务器和 ServerSocket : not working

ios - 文件从应用程序中删除,但仍然占用相同的空间?

linux - Golang 的 net.LookupHost() 是否使用 "/etc/resolv.conf"中的所有 DNS 服务器?

session - 在 golang 中将 map、struct 设置为 session (gin gonic 框架)

go - 如何模拟接口(interface)实现

go - 从 Golang 结构生成序列化器

C: TCP 服务器没有收到整个消息

c# - Perforce 命令行 : How to use -i flag in "p4 client -i"?

JavaScript 对象属性返回未定义

javascript - 通过本地存储设置时, react 状态仍在变化