spring - JWT 优缺点
问题描述
在过去的几天里,我阅读了有关 JWT 的文章,我完全理解了它背后的概念和授权的力量,时间明智。我的问题是当 CRUD 端点到位时 JWT 授权机制会发生什么?假设我必须从向我发送请求的特定用户中删除某个“任务”,其中包含 JWT 令牌。我要做的就是去数据库,检查用户是否属于那个任务,然后从数据库中删除那个任务。这会导致 2 次数据库调用。我现在的问题是,当涉及到包含需要验证某些用户可以执行特定操作的 CRUD 操作的端点时,JWT 真的那么强大吗?此外,即使我们不必这样做,我们仍然有 1 个数据库调用,即 CRUD 操作。有人可以帮我解决这个问题吗?
解决方案
最常见的模型是让后端在用户进行身份验证时向前端发送 JWT 令牌。然后,此令牌包含在后续请求中,服务器可以使用它来验证请求是否确实来自登录用户。一旦验证了这一点,服务器就可以安全地调用数据库来执行更改或数据库操作。
您可能会考虑的一件事是使用 Zetabase ( https://zetabase.io ) 之类的解决方案。这会自动为您提供 JWT 令牌和所有身份验证机制,以及一个约束系统,允许您在不使用后端的情况下执行您在此处讨论的任务,您可以直接从前端。
换句话说,使用 Zetabase 甚至使用 Firebase,您可以完全跳过中间层。数据库本身管理用户名、密码和身份验证,然后您直接从前端调用数据库。这只适用,因为这两个数据库允许“约束”,确保只允许适当的用户执行某些操作。
推荐阅读
- react-native - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。安装一些库时出错
- python-3.x - 按列名拼接 Pandas 数据框
- javascript - 为什么两个 if 语句在一个函数中不起作用?
- javascript - Javascript - 原始字符串隐式转换为对象
- php - PHP/Symfony 3:使用完全限定的类名(字符串)来调用实例化的类方法
- html - 我正在尝试在图像中间对齐文本。我不确定我在这里做错了什么
- swift - 当前用户未找到
- python - 如何在 Python 中使用 Matplotlib 绘制直方图以获取概率?
- mysql - 在mysql中获取两个日期之间的数据
- amazon-web-services - S3 签名的 url 在操作期间是否过期?