我已经在后端实现了一个 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/