Laravel 5 - Ошибка вызова неопределенного метода Illuminate \ Events \ Dispatcher :: fire () - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над REST API с использованием JWT.

Маршрут входа в систему хорош, но маршрутизатор в группе middleware jwt.auth не работает.

Ошибка:

Symfony \ Component \ Debug \ Exception \FatalThrowableError: вызов неопределенного метода Illuminate \ Events \ Dispatcher :: fire ()

Мой код:

Route::group(['namespace' => 'Api'], function(){

    Route::get('user/login', 'AuthController@login');

    Route::group(['middleware' => ['jwt.auth']], function() {            
        Route::get('auth/me', 'AuthController@me');
    });
});

Ответы [ 5 ]

0 голосов
/ 16 июля 2019

Изменен огонь () к диспетчеру () для Laravel 5.8 +

0 голосов
/ 03 июля 2019

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 метод.

Я надеюсь, что это решение работает с вами ..

0 голосов
/ 19 апреля 2019

Если вы используете пакет tymondesigns/jwt-auth, эта проблема поможет вам: https://github.com/tymondesigns/jwt-auth/issues/1787

Эта версия исправит эту проблему: https://github.com/tymondesigns/jwt-auth/releases/tag/1.0.0-rc.4

0 голосов
/ 24 июня 2019

Метод Event fire устарел в Laravel v5.8. Однако он работает в предыдущей версии Laravel v5.7. Вы можете использовать метод dispatch в Laravel v5.8 и более поздних версиях.Он работает так же, как метод fire, и отправляет событие в функцию-обработчик событий, зарегистрированную в EventServiceProvider

0 голосов
/ 21 марта 2019

fire был изменен на dispatch в переводе 5.8 здесь https://github.com/laravel/framework/pull/26392

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...