5

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

它工作正常。

由于某些原因,我在以下位置也有一条无人看守的路线web.php

Route::get('myroute', 'MyController@mymethod');

MyController@mymethod 的代码如下:

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

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

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

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

Tymon\JWTAuth\Exceptions\JWTException 需要令牌

智威汤逊.php

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

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

4

3 回答 3

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();

但是我宁愿直接使用 JWTAuth

于 2018-06-13T18:54:34.227 回答
1

代替

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

利用

$user = $this->jwt->User();
于 2018-10-01T18:50:28.113 回答
1

如果你使用的是 jwt-auth dev,旧版本的 toUser 方法会报错如上,试试这个:

// Get the currently authenticated user
$user = auth()->user();

如果用户未通过身份验证,则将返回 null。

于 2019-01-14T06:45:55.627 回答