Выход из Laravel, добавление слушателя

#php #laravel

#php #laravel

Вопрос:

Я пытаюсь добавить некоторую логику в функцию выхода из нашего существующего сайта laravel (laravel 5.2), но это не так просто, как вход в систему.

Существующий выход из системы на стороне клиента работает нормально, но все, что я хочу сделать, это добавить вызов моему экземпляру Cognito, чтобы вывести пользователя из сеанса cognito. В принципе, когда пользователь нажимает «Выйти», я хочу вывести их с веб-сайта, как это уже делается, но также попасть в конечную точку выхода для cognito

Мое замешательство вызвано тем фактом, что существующие маршруты и контроллер для аутентификации не совсем совпадают.

routes.api.php

 Route::get('logout', 'APIAuthAuthController@getLogout');
  

routes.auth.php

 Route::get('logout', 'AuthAuthController@getLogout')
    ->name('auth.logout');
  

Auth/AuthController.php (в моем конструкторе)

 $this->middleware('guest', ['except' => 'getLogout']);
  

Появляется моя ссылка для выхода из системы site/logout , и это определенно выводит пользователя из системы, но я хочу поместить свой вызов в конечную точку в нужном месте. Я также хочу убедиться, что я удаляю или уничтожаю сеанс при успешном выходе из системы

Недавно мне сказали, что я мог бы (и, вероятно, должен) добавить прослушиватель для события выхода из системы и выполнить свой вызов там.

Как именно я должен это сделать в данном случае, и куда именно это приведет?

Ответ №1:

В вашем EventServiceProvider вы можете подключить прослушиватель к событию выхода из системы и обрабатывать всю логику выхода в вашем прослушивателе.

 protected $listen = [
    'IlluminateAuthEventsLogout' => [
        'AppListenersLogSuccessfulLogout',
    ],
];
  

Затем вы можете создать свой прослушиватель logsucccessfullogout внутри AppListeners :

     namespace AppListeners;
    use IlluminateAuthEventsLogout;

    class LogSuccessfulLogout
    {
        /**
         * Create the event listener.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }

        /**
         * Handle the event.
         *
         * @param  Logout  $event
         * @return void
         */
        public function handle(Logout $event)
        {
            // Do your logic
        }
    }
  

Источник: https://laravel.com/docs/5.2/authentication#events

Комментарии:

1. Один вопрос: в этом файле уже есть защищенный файл $listen. Могу ли я добавить еще одну полноценную функцию или мне просто добавить событие в эту функцию?

2. Вы должны добавить своего слушателя в этот массив