Laravel 是目前使用最廣泛的 PHP Web 框架,它的登入功能非常常用,而登入成功後跳到指定頁面也是常見需求之一。本文將詳細介紹 Laravel 中如何實現登入後跳轉功能。
如果您還沒有安裝Laravel,可以按照以下步驟進行安裝:
composer global require laravel/installer
laravel new project_name
cd project_name
php artisan serve
在本文中,我們將使用預設配置進行開發,如果您使用了其他配置,可能會稍有不同。
在 Laravel 中實作登入功能非常簡單,只需要使用 Auth
中間件即可。在 routes/web.php
檔案中增加以下路由:
Route::get('/login', 'LoginController@showLoginForm')->name('login'); Route::post('/login', 'LoginController@login');
這兩個路由分別對應登入頁面的顯示和登入作業的處理。其中,LoginController@showLoginForm
方法用於顯示登入表單,LoginController@login
方法用於處理使用者提交的登入要求。
如果您還沒有建立LoginController
,可以透過以下指令快速建立:
php artisan make:controller LoginController
在LoginController
中,可以使用Laravel 提供的AuthenticatesUsers
trait 快速實現登入功能。只需要在類別中引入此trait 即可:
use AuthenticatesUsers; public function __construct() { $this->middleware('guest')->except('logout'); }
預設情況下,登入成功後會跳到/home
頁面,可以在Auth\LoginController
#中修改$redirectTo
屬性來指定使用者登入成功後跳轉的頁面。
protected $redirectTo = '/dashboard';//修改为你要跳转的路径
在Laravel 實現登入後跳轉也非常簡單,只需要在登入控制器中修改$redirectTo
屬性即可。但是,如果您希望登入成功後跳到使用者先前造訪的頁面,那麼需要進行以下操作:
RedirectIfAuthenticated
中間件 #在app/Http/Middleware
目錄下建立RedirectIfAuthenticated.php
文件,並加入以下程式碼:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; class RedirectIfAuthenticated { public function handle(Request $request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect()->intended('/dashboard');//修改为登录成功后要跳转的路径 } return $next($request); } }
程式碼中的intended
方法會嘗試將使用者重新導向到他們最初請求頁面的位置,如果沒有先前的位置,則預設會重新導向到指定的路徑。
app/Http/Kernel.php
中註冊中間件在app/Http/Kernel.php
#檔案中的$routeMiddleware
陣列中註冊新增的中間件:
protected $routeMiddleware = [ // ... 其他中间件省略 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, ];
在登入控制器中,將登入成功後重定向的目標位址修改為intended
方法,即可實現登入後跳到使用者之前造訪的頁面:
protected $redirectTo = '/dashboard';//删除这行
public function login(Request $request) { $this->validateLogin($request); if ($this->attemptLogin($request)) { // 登录成功后跳转到用户之前访问的页面 return redirect()->intended('/dashboard'); } $this->incrementLoginAttempts($request); return $this->sendFailedLoginResponse($request); }
在本文中,我們學習了在Laravel 實現登入後跳轉需要進行哪些操作。首先,我們需要使用 Auth
中間件實作登入功能。然後,我們透過修改登入控制器中的 $redirectTo
屬性來實現登入之後的跳躍。最後,我們透過建立中間件和修改登入控制器中的程式碼來實現登入後跳到使用者之前造訪的頁面。
希望本文能幫助您輕鬆實現 Laravel 中的登入後跳轉功能!
以上是laravel如何實現登入後跳轉功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!