Tymon\JWTAuth::toUser error: A token is required
Tymon\JWTAuth::toUser error: A token is required
我有一个 Larvel API,它使用 Tymon\JWTAuth 来验证用户。
它工作正常。
出于某些原因,我在 web.php
中也有一条 non-guarded 路线:
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
A token is required
JWT.php
protected function requireToken()
{
if (! $this->token) {
throw new JWTException('A token is required');
}
}
如何解码作为 URL 参数传递但不在请求的 header 中的令牌?
我用这段代码解决了它:
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
而不是
$user = JWTAuth::toUser($request->input('token'));
使用
$user = $this->jwt->User();
如果你使用的是jwt-auth dev,旧版本的toUser方法会报错如上,试试这个:
// Get the currently authenticated user
$user = auth()->user();
如果用户未通过身份验证,则返回 null。
我有一个 Larvel API,它使用 Tymon\JWTAuth 来验证用户。
它工作正常。
出于某些原因,我在 web.php
中也有一条 non-guarded 路线:
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 A token is required
JWT.php
protected function requireToken()
{
if (! $this->token) {
throw new JWTException('A token is required');
}
}
如何解码作为 URL 参数传递但不在请求的 header 中的令牌?
我用这段代码解决了它:
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
而不是
$user = JWTAuth::toUser($request->input('token'));
使用
$user = $this->jwt->User();
如果你使用的是jwt-auth dev,旧版本的toUser方法会报错如上,试试这个:
// Get the currently authenticated user
$user = auth()->user();
如果用户未通过身份验证,则返回 null。