我正在尝试实现一个不错的基于JWT
的api,所以我已经阅读了大量关于JWTs
及其工作原理的文档,但我无法弄清楚一些事情:
-
当用户登录到应用程序时,我是否通过
JWT
传递用户详细信息?例如,name,
电子邮件和用户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
键中的任何内容进行更新。
- 用户向
这是正确的做法吗?
您必须将令牌附加到名为 Authorization 的特殊 http 标头,例如使用以下模式:
headers('Authorization: JWT aer5a4era456f4asrgt1aer46a');