在 laravel 5.1 API 中使用 JWT


Using JWT in laravel 5.1 api

我正在尝试实现一个不错的基于JWT的api,所以我已经阅读了大量关于JWTs及其工作原理的文档,但我无法弄清楚一些事情:

  1. 当用户登录到应用程序时,我是否通过JWT传递用户详细信息?例如,name,电子邮件和用户permissions

  2. 我需要通过JWT传递所有内容吗?例如,从数据库中获取特定于页面的数据或获取所有博客文章或类似内容。

  3. 如何在后端确定用户是否有权执行此操作?如何从令牌中获取用户详细信息?

  4. 在这种情况下,我正在使用Tymon/JWT-Auth库,以下是我的应用程序目前如何工作的一些演示:

    1. 用户向api/authenticate路由发送post请求,路由登录用户并返回JWT令牌作为json以及用户详细信息 - nameemailpermissions 。因此,从服务器返回的数据如下所示:

    { "token": "blablabla", "user": { "email": "testin@test.com", "name": "Test User", "permissions": [ "can_edit_posts", "can_delete_users" ] } }

    JWT存储在 JavaScript 中名为 token 的全局变量中。用户数据存储在用户对象中。

    1. 用户转到"假设blogs"页面。此页面向服务器发送GET请求,该请求检索所有帖子:/blogs?token=[THAT_GLOBAL_VARIABLE_HERE]
    2. 服务器返回所有帖子的列表。
    3. 全局令牌变量使用标头中 Bearer 键中的任何内容进行更新。

这是正确的做法吗?

您必须将令牌附加到名为 Authorization 的特殊 http 标头,例如使用以下模式:

headers('Authorization: JWT aer5a4era456f4asrgt1aer46a');