Laravel 授權後重定向回原始目的地
用戶授權後重定向到預期目的地是Web 應用程式中的常見要求。在 Laravel 中,要實現這一點需要了解授權的工作原理並利用適當的技術。
授權過程
當使用者嘗試存取受保護的路由時,Laravel 的身份驗證中間件,例如auth中間件,攔截請求。如果用戶未登錄,他們將被重定向到登錄頁面。
確定原始目的地
登入後,我們需要確定使用者的原始頁面正在嘗試在授權過程開始之前存取。 Laravel 為此提供了內建功能:
Laravel 5.3 及以上
從 Laravel 5.3 開始,引入了預期的輔助方法。在登入控制器中,成功驗證後:
return redirect()->intended('/');
這會將使用者重新導向到他們最初嘗試造訪的頁面。
Laravel 5 Up to 5.2
在Laravel 5 到5.2 中,您可以在重定向上使用預期的()方法重定向class:
return redirect()->intended('defaultpage');
如果未設定預期頁面,則會重新導向到指定的預設頁面,例如主頁。
Laravel 4 及更早版本
在 Laravel 5.3 之前,缺乏對此功能的官方支援。一種方法是在授權過程中將預期的URL 儲存在會話中,然後在成功登入後重定向到該URL:
// In the authorization filter if (Auth::guest()) { Session::put('intended', Request::fullUrl()); return Redirect::guest('login'); } // In the login controller if (Auth::attempt(['email' => $email, 'password' => $password])) { $intended = Session::get('intended'); Session::forget('intended'); return Redirect::to($intended ?: 'defaultpage'); }
手動實作
如果您願意手動實現此功能,您可以將使用者重新導向到登入後可以選擇所需目的地的頁面。或者,您可以將預期頁面儲存在瞬態變數(例如 cookie)中授權成功後立即將使用者重新導向到它。
以上是Laravel 授權後如何將使用者重新導向至其預期目的地?的詳細內容。更多資訊請關注PHP中文網其他相關文章!