jquery - ExpressJS - 如何使用 Auth RestAPI 收到的 JWT
问题描述
我已经构建了一个用户 REST-API(使用 ExpressJS),它对属于特定用户的用户(帐户)数据和任务执行 CRUD 操作。如果用户成功通过身份验证,API 将返回 JWT。
我现在正在构建一个简单的前端 Web 应用程序(我只知道 Jquery)来测试这些 CRUD 功能。我正在使用 $.ajax 发送发布请求(包含用户名和密码)并接收 JWT。
问题是我现在完全不知道下一步该为客户端应用程序做什么。
我的问题是:
- 在哪里存储 JWT(Cookie、sessionStorage、LocalStorage)?
- 存储 JWT 后,如何设置客户端应用程序:
+ 单页应用程序仅使用 AJAX 请求动态数据?
+ 使用 MVC 和模板引擎的动态 Web 应用程序(利用 HTML 请求包含动态数据的页面)?
+ 也许是上述两者的混合体?
我真的很想知道现在前端和后端 API 是如何相互交流的。
解决方案
很高兴知道有人坚持这一点,几年前我也有同样的疑问。
直接找到答案 因此,由于您的 API 能够返回 JWT 令牌,因此需要考虑的事情很少。由于您使用的是 Jquery,所以我假设您的前端技术无法立即保护您免受简单的 XSS 攻击,因此将您的令牌存储在本地存储和 JS 可访问的任何其他存储中并不是一个好主意在前端。所以我们的首选将是仅限 HTTP 的 cookie。
如果你使用的是 React 之类的东西,那么你也可以使用 Localstorage。
现在,我们如何在每个请求中获取您的 JWT 以在后端验证请求?如果您使用仅 HTTP cookie 或任何 cookie,您将可以在每个请求中访问 cookie,答案非常简单。
旁注:您需要为此启用某些标志。
在另一种情况下,您可以在正文中发送带有您的请求的 JWT(确保您使用的是 HTTPS :D )。
然后在后端,您可以创建一个中间件来使用您刚刚收到的 JWT 验证请求。
让我知道是否还有什么我可以为您澄清的。
推荐阅读
- node.js - 高级调度程序 - Heroku - smtp 服务发送到电子邮件
- ruby - 为什么浮点数除以零不会在 Ruby 中引发异常?
- docker - Docker 卷和绑定
- c - Linux 套接字:有没有办法只接收来自特定环的数据包?
- reactjs - 在 ReactJS 中处理类似组件的最佳方法是什么?
- java - 选定的单选按钮取前一个的值
- sql - 在 SQL Server 的 WHERE 子句中按变量选择所有行
- pdf - 为什么一个 CID 号映射到一个 CMap 文件中的两个 UTF16 编码?
- python-3.x - PythonShell.py:27: RuntimeWarning: coroutine 'get_info' 从未等待 mpl.use('AGG')
- java - Spring BeanUtils、copyProperties 和应用操作