Tymon\JWTAuth::toUser 错误:需要令牌

Fab*_*bry 5 authentication jwt laravel laravel-5 jwt-auth

我有一个使用 Tymon\JWTAuth 对用户进行身份验证的 Larvel API。

它工作正常。

出于某些原因,我还有一条不受保护的路线web.php

Route::get('myroute', 'MyController@mymethod');
Run Code Online (Sandbox Code Playgroud)

MyController@mymethod 的代码如下:

$user = JWTAuth::toUser($request->input('token'));

// I tried also this:
// JWTAuth::setToken($request->input('token'));
// $user = JWTAuth::authenticate();
Run Code Online (Sandbox Code Playgroud)

我在浏览器中使用这个 url 调用路由: /myroute?token=eyJ0eXAiOiJKV1QiLCJhbGci....

问题是我在 JWT.php 中有一个异常:

Tymon \ JWTAuth \ Exceptions \ JWTException 需要一个令牌

JWT.php

protected function requireToken()
{
    if (! $this->token) {
        throw new JWTException('A token is required');
    }
}
Run Code Online (Sandbox Code Playgroud)

如何解码作为 URL 参数传递而不是在请求标头中的令牌?

Fab*_*bry 1

我使用这段代码解决了它:

use Namshi\JOSE\SimpleJWS;

$secret = config('jwt.secret');
$jws = SimpleJWS::load($token);
if (!$jws->isValid($secret)) {
   return response()->json([], 401); // unauthorized
} 
$payload = $jws->getPayload();
$account = Account::find($payload["account"]["id"]);
Run Code Online (Sandbox Code Playgroud)

不过我更愿意直接使用 JWTAuth