Laravel JWT Auth Token无效/签名无法验证

时间:2016-11-20 14:43:43

标签: laravel jwt

我已经厌倦了这个错误。现在坚持了2天。

我确实收到有效凭据上的令牌,但无论我是通过url参数(?token = [token])还是通过Auth标头(Bearer:[token])传递,我的令牌都会无效。 还有人经历过这个吗?我按照教程中的所有内容。还在我的公用文件夹和我的apache配置中配置了ee.__array_interface__

.htaccess

转到此路线返回

Route::get('/test', function () { return JWTAuth::parseToken()->authenticate(); }); 第71行中的TokenInvalidException: 令牌签名无法验证。 对于查找,这是我的AuthController.php

中的身份验证方法
NamshiAdapter.php

我的路线中间件组:

public function authenticate(Request $request) {
    $credentials = $request->only('email', 'password');

    $user = User::where('email', Input::get('email'))->first();

    try {
        if (!$token = JWTAuth::attempt($credentials)) {
            return $this->respondUnauthorized();
        }
    } catch (JWTException $e) {
          return $this->respondInternalError('Could not create token!');
    }
    // dd()
    return $this->respond([
        'token' => compact('token'),
        'user' => $user]);
}

当我检查我的NamshiAdapter中的第71行并且我dd()我的令牌时,它说我的秘密是空的......

肯定有问题吗?这只是一个小错误还是我错过了什么?

2 个答案:

答案 0 :(得分:1)

我有同样的问题

解决方案是jycr753所说的......"在jwt.php中设置api的秘密"

实际上在config / jwt.php上,有一行'secret' => env('JWT_SECRET'),

  • 使用此助手php artisan jwt:generate生成密钥(出于某种原因,我不知道为什么它没有像php artisan key:generate那样在.env文件中设置。)

  • 复制不带括号的密钥(jwt-auth secret [DSvO98YtJ0204mBu9zqWN9QOMX7Tmvr9] set successfully.)并将其添加到。JWT_SECRET=DSvO98YtJ0204mBu9zqWN9QOMX7Tmvr9等.env文件中,或者您可以在jwt.php secret' => env('DSvO98YtJ0204mBu9zqWN9QOMX7Tmvr9')

答案 1 :(得分:1)

Laravel 5.5中的

(在我的情况下):

1-运行命令:

php artisan jwt:secret

你应该看到这个结果:

  

jwt-auth secret [mygeneratedsecret]设置成功。

2-复制秘密,它位于括号(mygeneratedsecret)之间,并将其添加到.env文件中,如下所示:

JWT_SECRET=mygeneratedsecret

3-确保配置文件jwt.php的密码设置如下:

'secret' => env('JWT_SECRET'),

重要提示:

  

不要忘记重新生成令牌(使用您的登录脚本或您使用的任何内容),因为旧令牌(在秘密配置之前)   对新秘密仍然无效

快乐编码:)