JWT все еще использует метод огня, и он заменен методом диспетчеризации в Laravel 5.8, поэтому решение должно изменить вызов метода в JWT.
это решение работало со мной на Laravel 5.8
перейдите по этому пути в вашем проекте
\vendor\tymon\jwt-auth\src\Middleware\GetUserFromToken.php
это оригинальный код:
public function handle($request, \Closure $next)
{
if (! $token = $this->auth->setRequest($request)->getToken()) {
return $this->respond('tymon.jwt.absent', 'token_not_provided', 400);
}
try {
$user = $this->auth->authenticate($token);
} catch (TokenExpiredException $e) {
return $this->respond('tymon.jwt.expired', 'token_expired', $e->getStatusCode(), [$e]);
} catch (JWTException $e) {
return $this->respond('tymon.jwt.invalid', 'token_invalid', $e->getStatusCode(), [$e]);
}
if (! $user) {
return $this->respond('tymon.jwt.user_not_found', 'user_not_found', 404);
}
$this->events->fire('tymon.jwt.valid', $user);
return $next($request);
}
, и вы должны изменить:
$this->events->fire('tymon.jwt.valid', $user)
до:
$this->events->dispatch('tymon.jwt.valid', $user);
метод fire
заменяется только на dispatch
, поскольку метод fire
недоступен в Laravel 5.8, а новейшим способом является использованиеdispatch
метод.
Я надеюсь, что это решение работает с вами ..