簡體   English   中英

注銷Laravel上的Flash會話

[英]Flash session on logout Laravel

應用程序/ HTTP /控制器/認證/ 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('/');
}

我的錯誤日志在這里起作用,但是當我實際重定向時,它進入路由/web.php行:

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

但是此時該會話似乎不再存在。 我的最終目標是在用戶成功注銷的登錄頁面上顯示它。 我感覺我的邏輯有缺陷,並且已通過路由文件將其刪除,但是我知道在某些時候確實在寫會話。 有什么建議嗎?

以我為例

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

而且我仍然可以使用該功能向我的所有路線發出警報而不會出錯

當您注銷會話時,會話過期,因此會話Flash消息未顯示...,因此您必須在沒有會話的情況下使用Flash消息...使用另一種方法顯示Flash消息。

嘗試這個

    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 : '/');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM