我已经厌倦了这个错误。现在坚持了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()我的令牌时,它说我的秘密是空的......
肯定有问题吗?这只是一个小错误还是我错过了什么?
答案 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)
(在我的情况下):
1-运行命令:
php artisan jwt:secret
你应该看到这个结果:
jwt-auth secret [mygeneratedsecret]设置成功。
2-复制秘密,它位于括号(mygeneratedsecret)之间,并将其添加到.env文件中,如下所示:
JWT_SECRET=mygeneratedsecret
3-确保配置文件jwt.php
的密码设置如下:
'secret' => env('JWT_SECRET'),
重要提示:
不要忘记重新生成令牌(使用您的登录脚本或您使用的任何内容),因为旧令牌(在秘密配置之前) 对新秘密仍然无效
快乐编码:)