【问题标题】:Storing Tokens in the browser在浏览器中存储令牌
【发布时间】:2017-10-19 23:39:13
【问题描述】:

问题 =]

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

工具

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我更喜欢无状态路由....同时保持无状态认证的优势?
    猜你喜欢
    • 2021-07-11
    • 2021-03-09
    • 1970-01-01
    • 2020-03-20
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-07-03
    • 2018-11-15
    相关资源
    最近更新 更多