Flash-сессия при выходе из Laravel

приложение/Http/Контроллеры/Auth/LoginController.php

В папке моего приложения у меня есть LoginController, который я переопределяю функцией выхода из системы, чтобы добавить флэш-память сеанса:

public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->flush();

    $request->session()->regenerate();
    $request->session()->flash('status', 'Task was successful!');

    error_log('~~~~~~~~~~~~~~~~~~~~~');
    error_log($request->session()->get('status'));
    error_log('~~~~~~~~~~~~~~~~~~~~~');

    return redirect('/');
}

Мой журнал ошибок работает здесь, но когда меня действительно перенаправляют, он переходит на строку route/web.php:

Route::get('/', 'HomeController@index');

Но в этот момент кажется, что сеанс больше не существует. Моя конечная цель состояла в том, чтобы отобразить на моей странице входа, что пользователь успешно вышел из системы. У меня есть ощущение, что моя логика ошибочна, и она стирается через файл маршрутов, но я знаю, что в какой-то момент я действительно пишу в сеанс. Любой совет?


person Lucas SenCab A Ugh    schedule 21.10.2016    source источник
comment
вы пробовали этот подход? return redirect('/')->withStatus('Task was sucessful!');   -  person manix    schedule 22.10.2016
comment
вернуть редирект('/логин'); останавливает меня от перехода к перенаправлению маршрута и позволяет мне перейти к моему логину. Это будет мое решение, но я хотел бы знать, как сохранить вспышку во время перенаправления маршрута (если это вообще возможно)   -  person Lucas SenCab A Ugh    schedule 24.10.2016


Ответы (3)


в моем случае я просто использую

Session::flash('message','User Just Logout');
Session::flash('alert','alert-danger');

и я использую этот код, чтобы получить свое сообщение в файле шаблона блейда

@if(Session::has('message'))
  <p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif

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

person Wahyu Fadzar    schedule 30.03.2018

Попробуй это

    public function logout(){
    //Illuminate\Support\Facades\Auth::logout();
    Auth::logout();
    flash()->info('Bye', 'You have been successfully logged out!');
    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}
person halimus    schedule 08.11.2016

когда вы выходите из системы, срок действия вашего сеанса истекает, и поэтому флэш-сообщение сеанса не отображается... поэтому вам нужно использовать флэш-сообщение без сеанса... используйте другой подход для отображения флэш-сообщения.

person Imad Ullah    schedule 21.06.2018