jwt api身份验证是如何工作的(使用dingo-laravel)


How does jwt api authentication work (with dingo-laravel)

我知道这个问题有点宽泛,但让我缩小范围。我用laravel建立了一个小型社交网络,我期待着用dingo建立api,我的问题是我想知道使用我的api的开发人员(开发人员身份验证),这让我感到困惑,因为使用api的开发人员将不得不验证我网站的用户发布或获取有关他们的信息…我想知道这个身份验证应该如何工作。

假设一个密码为'dev123'的开发人员dev@gmail.com想要获取一个特定用户的帖子,该帖子的url为mydomain.com/api/users/445/posts/4,用户445的电子邮件地址为user@gmail.com,密码为'user123'。如何使用jwt管理处理开发人员身份验证和用户身份验证。我看过一些关于jwt的教程,但是很困惑到底是api用户(开发人员)还是平台用户正在进行身份验证。提前感谢,如果有这样的教程,我将不胜感激。

如何管理jwt的开发人员身份验证和用户身份验证。

每个设备上的每个用户和每个开发人员都会收到他自己的承载令牌,一旦他通过您需要选择的方法登录。作为承载令牌的一部分,你可以编码自定义数据,例如用户id或用户角色(或者更好的哈希值)。

从令牌中提取这些信息,您可以使用它来访问特定的资源,这取决于用户id,角色或您选择的任何内容。

请参阅https://stormpath.com/blog/jwt-the-right-way以获取可以委托给JWT的"声明"的示例,例如:

//header
{
    "alg": "HS256", //denotes the algorithm (shorthand alg) used for the  signature is HMAC SHA-256
    "typ": "JWT" //denotes the type (shorthand typ) of token this is
}
//claims
{
    "sub": "tom@stormpath.com",
    "name": "Tom Abbott",
    "role": "user"
}