【问题标题】:Laravel JWT : generated tokens on the localhost are valid on the serverLaravel JWT:本地主机上生成的令牌在服务器上有效
【发布时间】: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 是的,就是这样,如果可以,请将其发布为答案

标签: php laravel api jwt


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2017-11-24
    • 2017-03-17
    • 1970-01-01
    • 2018-02-26
    • 2013-03-16
    • 2017-11-01
    相关资源
    最近更新 更多