Go中是否可以访问存储在客户端localstorage中的JWT令牌?

时间:2014-12-16 22:50:38

标签: go client local-storage server

我已经在后端实现了SPA应用程序,并且通过角度很容易授权存储在浏览器localstorage中的令牌,但在前端我使用服务器来呈现html。

在go,在HTTP请求处理程序中,从服务器,我如何获取浏览器localstorage / sessionstorage来检索令牌,验证它并在响应中呈现允许的内容?

这是可能的还是我必须使用会话?

我想也许某种程度上http.client有某些我不明白的方式,这有助于完成这项工作?

修改 如果不可能,我发现了这个:http://www.gorillatoolkit.org/pkg/securecookie - 我尝试了googleing但我想绝对肯定这个hmac验证使这个解决方案至少和JSON Web令牌一样安全吗?

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

1 个答案:

答案 0 :(得分:1)

有些人对你的问题进行了低估,所以也许它可以帮助你做好准备:

  • Backend是生成html并将其发送到用户服务器端的东西;
  • 前端是最终用户在他/她的浏览器中看到的内容(包括javascript) - 客户端。
  • 浏览器localstorage位于frontend,因此backend无法访问。您可以使用cookie(存储在客户端,但发送到服务器端,反之亦然) - 但这就是它的内容。
  • securecookie是一种在客户端存储cookie的方式,没有任何人能够改变/查看它们除了你自己 - 因为它是使用"秘密"加密的。只有你(应该)知道。
  • 会话数据的优势在于,无需验证伪造内容 - 您是将数据放在那里的人,以及是否存在某些/某人做过的事情伪造会话数据,然后你就会遇到更大的问题。您还可以存储您不希望最终用户/客户了解的内容。使用加密的cookie是实现此目的的替代方法。
    • 请注意,您也可以使用会话数据存储大量内容 - 如果有最终用户存储500MB会话数据blob的sa(可能有效但奇怪)原因,您不想要立即向最终用户发送500MB。会话数据保留在您的服务器上。