#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. Вы должны добавить своего слушателя в этот массив