将令牌存储在浏览器中

问题=]

  • 根据我的研究,在本地存储中存储networking令牌似乎是使用cookie来防止CSRF攻击的首选方法(我知道本地存储容易受到XSS攻击,尽pipe这些容易防止比CSRF容易)。 这就是说,我一直无法find任何关于利用本地存储这一手段的相关指南…
  • 我正在寻找一些帮助,了解如何工作…
    1. 将服务器签名的令牌传递给浏览器本地存储的首选方法/工作stream程是什么?
    2. 一旦浏览器存储了令牌,我该如何使用那个存储的令牌。
      • 我是否需要通过JS停止默认提交表单之类的东西,然后用每个请求的authorization: Bearer <token>头来发送AJAX请求?
      • 当用户点击指向该用户拥有的资源的链接时,如何将该令牌发送给服务器以授予对受保护资源的访问权限?

工具

  • 前端
    • HTML5(从手柄编译)
    • JS
    • CSS(由SASS编译)
  • 后端
    • nodeJS(使用Express)

注意:我希望将来可以通过代码示例来编辑这篇文章(一旦我得到了它的大声笑),来帮助像我这样的其他困惑的人

       

网上收集的解决方案 "将令牌存储在浏览器中"

首选的方法是从/ users / login请求(无论你喜欢什么,标题或正文)返回成功的响应标记。 然后你把它放到本地存储。

这里最重要的是JWT不能在没有HTTPS的情况下使用。 否则,你将最终通过无保护的凭据。

获取令牌后,您应该手动将其作为头添加到每个请求。 使用一些js ajax包装来简化这个任务。

据我所知,没有办法用<a href="">元素发送自定义标题。 所以我结束了传递额外的令牌(一些散列,而不是JWT)以及链接<a href="/some_protectded_page?token=..."> 。 但是这不是最佳的。 如果在服务器端渲染页面,最好使用会话。