【发布时间】:2023-03-30 00:28:01
【问题描述】:
我正在尝试实现一个不错的基于 JWT 的 API,因此我已经阅读了大量有关 JWTs 及其工作原理的文档,但我无法弄清楚一些事情:
当用户登录应用程序时,我是否通过
JWT传递用户详细信息?例如,name,email 和用户permissions。我需要通过
JWT传递所有内容吗?例如,从数据库中获取页面特定数据或获取所有博客文章或类似的东西。如何在后端查明用户是否有权执行此操作?如何从令牌中获取用户详细信息?
-
在这种情况下,我使用的是
Tymon/JWT-Auth库,下面是我的应用程序目前如何工作的一个小演示:- 用户向
api/authenticate路由发送post请求,该路由将用户登录并返回JWT令牌作为json以及用户详细信息-name、email和permissions。所以服务器返回的数据是这样的:
{ "token": "blablabla", "user": { "email": "testin@test.com", "name": "Test User", "permissions": [ "can_edit_posts", "can_delete_users" ] } }JWT存储在 javascript 中名为token的全局变量中。用户数据存储在用户对象中。- 用户转到假设是
blogs页面。此页面向服务器发送GET请求,该请求检索所有帖子:/blogs?token=[THAT_GLOBAL_VARIABLE_HERE] - 服务器返回所有帖子的列表。
- 全局令牌变量将使用标题中
Bearer键中的任何内容进行更新。
- 用户向
这是正确的做法吗?
【问题讨论】: