jwt api 身份验证如何工作(使用 dingo-laravel)
Posted
技术标签:
【中文标题】jwt api 身份验证如何工作(使用 dingo-laravel)【英文标题】:How does jwt api authentication work (with dingo-laravel) 【发布时间】:2017-01-16 04:01:11 【问题描述】:我知道这个问题有点宽泛,但让我缩小范围。我已经用 laravel 建立了一个小型社交网络,我期待用 dingo 构建 api 我的问题是我想知道使用我的 api(开发人员身份验证)的开发人员,这让我感到困惑,因为使用 api 的开发人员必须对我网站的用户进行身份验证以发布或获取有关他们的信息...我想知道此身份验证应该如何工作。
假设密码为“dev123”的开发人员 dev@gmail.com 想要获取特定用户的帖子,帖子的网址是 mydomain.com/api/users/445/posts/4,用户 445 有电子邮件 user@ gmail.com 和密码“user123”。如何使用 jwt 管理处理开发人员身份验证和用户身份验证。我已经查看了一些关于 jwt 的教程,但对正在验证的是 api 用户(开发人员)还是平台用户感到困惑。在此先感谢,如果有的话,我将不胜感激。
【问题讨论】:
【参考方案1】:如何使用 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"
【讨论】:
谢谢,但我不明白当你说通过我需要选择的方法时。我只在 api 请求中看到用户声明,这是否意味着请求中不需要开发者信息和令牌? 如果您对开发人员进行身份验证(即开发人员登录),您可以给他一个角色为“开发人员”的令牌。然后,当请求带有包含“开发者”角色的有效令牌时,您可以确定它是开发者并授权访问需要开发者或所有者访问的资源。以上是关于jwt api 身份验证如何工作(使用 dingo-laravel)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 lumen 5.8.* 中使用 dingo 修复实现 jwt?目标 [Dingo\Api\Contract\Routing\Adapter] 不可实例化
使用内置的 Laravel 5.2 身份验证并加载 SPA,然后为所有其他路由加载 Dingo API