【问题标题】:ExpressJS - How to use JWT received by Auth RestAPIExpress JS - 如何使用 Auth Rest API 接收的 JWT
【发布时间】:2021-10-06 19:37:21
【问题描述】:

我已经构建了一个用户 REST-API(使用 ExpressJS),它对属于特定用户的用户(帐户)数据和任务执行 CRUD 操作。如果用户成功通过身份验证,API 将返回 JWT。

我现在正在构建一个简单的前端 Web 应用程序(我只知道 Jquery)来测试这些 CRUD 功能。我正在使用 $.ajax 发送发布请求(包含用户名和密码)并接收 JWT。

问题是我现在完全不知道接下来要为客户端应用做什么。

我的问题是:

  • 在哪里存储 JWT(Cookie、sessionStorage、LocalStorage)?
  • 存储 JWT 后,如何设置客户端应用程序:
    + 单页应用只使用 AJAX 请求动态数据?
    + 使用 MVC 和模板引擎的动态 Web 应用程序(利用 HTML 请求包含动态数据的页面)?
    + 也许是上述两者的混合体?

我真的很想知道现在前端和后端 API 是如何相互交流的。

【问题讨论】:

    标签: jquery node.js jwt backend rest


    【解决方案1】:

    很高兴知道有人坚持这一点,几年前我也有同样的疑问。

    直接找到答案 因此,由于您的 API 能够返回 JWT 令牌,因此需要考虑的事项很少。由于您使用的是 Jquery,所以我假设您的前端技术无法立即保护您免受简单的 XSS 攻击,因此将您的令牌存储在本地存储和 JS 可访问的任何其他存储中并不是一个好主意在前端。所以我们的首选将是仅限 HTTP 的 cookie。

    如果您使用的是 React 之类的东西,那么您也可以使用 Localstorage。

    现在,我们将如何在每个请求中获取您的 JWT,以在后端验证请求? 如果您使用的是仅 HTTP cookie 或任何 cookie,那么答案非常简单,您可以在每个请求中访问 c​​ookie。

    旁注:您需要为此启用某些标志。

    在另一种情况下,您可以在正文中发送带有请求的 JWT(确保您使用的是 HTTPS :D)。

    然后在后端,您可以创建一个中间件来使用您刚刚收到的 JWT 验证请求。

    如果还有什么我可以为你澄清的,请告诉我。

    【讨论】:

    • 这些很有用,谢谢! .我在请求的 Authentication 标头中看到了其他使用 JWT 的方法。那有什么用例?
    • 其实我的错,我们应该将 JWT 作为 Auth Header 而不是正文发送,原因!我们没有 GET 请求的正文。
    猜你喜欢
    • 2020-10-09
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2020-07-11
    • 2018-11-09
    相关资源
    最近更新 更多