在浏览器中存储令牌

时间:2017-05-19 18:35:34

标签: javascript node.js local-storage token jwt

问题=]

  • 根据我的研究,似乎在本地存储中存储网络令牌是使用cookie以防止 CSRF 攻击的首选方法(我知道本地存储很容易受到XSS攻击)这些似乎比CSRF更容易预防。话虽如此,我无法找到关于利用本地存储的任何 相关 指南...
  • 我正在寻求一些帮助,以了解以下工作原理......
    1. 将服务器签名的令牌传递给浏览器的本地存储的首选方法/工作流程是什么。
    2. 浏览器存储令牌后,如何使用该存储的令牌。
      • 我是否需要通过JS停止默认提交表单等内容,然后在每次请求时使用authorization: Bearer <token>标头发送AJAX请求?
      • 当用户单击指向该用户所拥有资源的链接时,如何将该令牌发送到服务器以授予对受保护资源的访问权限?

工具

  • 前端
    • HTML5(由Handlebars编译)
    • JS​​
    • CSS(由SASS编译)
  • 返回端
    • nodeJS(使用Express)

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

1 个答案:

答案 0 :(得分:1)

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

最重要的是,没有HTTPS就不能使用JWT。否则,您将最终传递未受保护的凭据。

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

据我所知,发送带有$this->add(array( 'name' => 'submit', 'type' => 'Button', 'options' => array( 'label' => 'Speichern', 'button-group' => 'group-1', ), 'attributes' => array( 'type' => 'submit', 'class' => 'btn btn-primary btn-lg', ), )); $this->add(array( 'name' => 'cancel', 'type' => 'Button', 'options' => array( 'label' => 'Abbrechen', 'button-group' => 'group-1', ), 'attributes' => array( 'type' => 'submit', 'class' => 'btn btn-default btn-lg', ), )); 元素的自定义标头是没有办法的。所以我最终传递了额外的令牌(一些哈希,而不是JWT)以及链接<a href="">。但这不是最佳选择。如果在服务器端渲染页面,最好使用会话。