【发布时间】:2017-04-03 23:23:20
【问题描述】:
我已经厌倦了这个错误。现在卡了 2 天。
我确实收到了有效凭据上的令牌,但我的令牌仍然无效,无论我是通过 url 参数 (?token=[token]) 还是作为 Auth 标头 (Bearer: [token]) 传递它。
有人还在经历这个吗?我遵循了教程中的所有内容。还在我的公用文件夹和我的 apache 配置中配置了 .htaccess。
Route::get('/test', function () {
return JWTAuth::parseToken()->authenticate();
});
走这条路返回
NamshiAdapter.php 第 71 行中的 TokenInvalidException:
无法验证令牌签名。
对于查找,这是来自我的 AuthController.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]);
}
我的路由中间件组:
Route::group(['middleware' => ['jwt.auth', 'jwt.refresh']], function() {
当我在我的 NamshiAdapter 中检查第 71 行并且我 dd() 我的令牌时,它说我的秘密是空的......
一定有什么问题吗?这只是一个小错误还是我遗漏了什么?
【问题讨论】:
-
您需要在配置文件夹内的 jwt.php 中设置 api 密码... laravel 将生成令牌,但由于密钥不存在,因此无法验证,因此应用程序不知道它是否是合法的令牌
-
你跑
php artisan jwt:secret了吗? -
两者都做了,还尝试为jwt生成密钥,没有自动设置(这是另一个错误),手动设置没有问题..@g3ek1337
-
出于好奇,您使用的是哪个版本的 JWT?因为我遇到了一些类似的问题,最终成为
namshi/jose版本与另一个包创建问题并且无法验证令牌。 -
嗯,我相信它是 0.5.9..?在我的 composer.json 它说 ">=0.5".. 我在哪里可以检查确切的版本?我尝试使用作曲家更新来更新它。 @g3ek1337