Laravel JWT:本地主机上生成的令牌在服务器上有效

Posted

技术标签:

【中文标题】Laravel JWT:本地主机上生成的令牌在服务器上有效【英文标题】:Laravel JWT : generated tokens on the localhost are valid on the server 【发布时间】:2017-10-07 03:52:33 【问题描述】:

我正在为移动应用程序编写 API,后端网站是用 Laravel 编写的。我正在使用 Tymon\JWTAuth 进行这样的身份验证:

function  auth()

    try 
        if(!$user = JWTAuth::parseToken()->authenticate())
        
            return  ('login or register');
        
    
    catch (JWTException $e )
    
        return   ('token is invalid');
    
    return  $this->user = $user ;

今天我注意到了一些事情,当我在我的 localhost API 上为 id 为 4 的用户生成 JWT 令牌时,如果我将相同的令牌发送到实时 API 而不是收到错误消息,我会得到具有 id 的用户4!基本上,我可以通过在我的本地主机上的他/她的 id 上生成一些令牌来使用我想要的任何用户登录。我错过了什么吗?

我不知道这是否与此有关,但为了节省测试时间,我不将令牌作为 POST 正文和标头的一部分发送,只是在带有 GET 方法的 URL 中发送,例如:

site.com/api/user?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

【问题讨论】:

我会发表评论,但我没有足够的声誉。您的本地和远程位置的密钥是否相同?我不能 100% 确定,但可能是用户 JWT 令牌的所有可能组合都是有效的,除非明确列入黑名单(或它们已过期)。因此,如果您拥有相同的密钥,那么您将获得两个应用程序的有效令牌。我也是 JWT 令牌的新手,所以我想看看是否有人对此有更多了解。 See this link for info on how JWT Tokens are verified @LeviJames 是的,就是这样,如果可以,请将其发布为答案 【参考方案1】:

听起来你本地主机和远程位置的密钥是一样的。更改这些可能会解决您的问题。

【讨论】:

以上是关于Laravel JWT:本地主机上生成的令牌在服务器上有效的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中验证 Node 生成的 JWT

在本地主机上运行 laravel 时出现内部服务器错误

JSON字符串没有得到正确的值返回错误

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

Laravel 5.2 session flash 在本地主机上工作但在服务器上不工作?

Vue 组件显示在本地主机上,但不在使用 Laravel 5.4 的服务器上:Passport