作為一個開源的 PHP Web 框架,Laravel 一直以來都備受 Web 開發者的青睞。其強大的功能與易用性皆為其優勢。對於一個 Web 應用程式來說,登入是非常基礎的功能之一。在 Laravel 中,我們可以很快地實現使用者登錄,並且進行跳轉。
下面,我們就來講一下 Laravel 中使用者登入和跳轉的實作方法。
在開始編寫程式碼之前,我們首先需要確保以下條件:
如果你還沒有開啟Laravel 的身份認證功能,可以在終端機裡進入到專案根目錄並輸入以下指令:
php artisan make:auth
對於已開啟身分認證功能的Laravel 項目,我們便可以依照下列步驟進行實作。
在 Laravel 中,我們可以透過表單來取得使用者輸入的使用者名稱和密碼。一般而言,我們會在表單中設定為Post 方法,並且提交到一個叫做LoginController 的控制器中,如下程式碼所示:
<form method="POST" action="{{ route('login') }}"> @csrf <div> <label for="email">邮箱</label> <div> <input id="email" type="email" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> </div> </div> <div> <label for="password">密码</label> <div> <input id="password" type="password" name="password" required autocomplete="current-password"> </div> </div> <div> <div> <div> <input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> <label for="remember"> 记住我 </label> </div> </div> </div> <div> <div> <button type="submit"> 登录 </button> @if (Route::has('password.request')) <a href="{{ route('password.request') }}"> 忘记密码了? </a> @endif </div> </div> </form>
當使用者填寫完表單資訊後,點擊「登入」按鈕,便會提交資料到LoginController 控制器中。
我們在app/Http/Controllers/Auth/LoginController.php 檔案中找到login 方法,將方法的內容修改如下:
use IlluminateHttpRequest; public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { // 认证成功后的操作 } return back()->withErrors( ['email' => '用户名或密码错误'] ); }
以上程式碼中,我們先取得了使用者表單所提交的數據,即郵箱和密碼。緊接著,我們嘗試使用 Auth::attempt() 方法對使用者進行身份認證。如果使用者認證成功,則在 if 語句中進行後續操作,否則傳回錯誤訊息,提示使用者使用者名稱或密碼錯誤,並重新載入登入介面。
當使用者成功登入之後,我們需要將使用者跳到指定的頁面。在 Laravel 中,有兩種實作方式,分別如下。
我們可以透過在 LoginController 控制器中增加 authenticated() 方法,來實作重定向到指定頁面。此方法會在使用者認證成功後自動呼叫。修改後的 LoginController 控制器程式碼如下:
use IlluminateHttpRequest; public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { return redirect()->intended('/home'); } return back()->withErrors( ['email' => '用户名或密码错误'] ); } protected function authenticated(Request $request, $user) { return redirect('/home'); }
以上程式碼中,我們可以看到 authenticated() 方法,該方法將使用者重新導向到 /home 頁面。
我們也可以在登入成功後,透過註冊路由的方式來實現重定向。在web.php 檔案中,我們註冊以下路由:
Route::get('/home', function () { return view('home'); })->name('home'); Route::group(['middleware' => 'auth'], function () { Route::get('/', function () { return redirect()->route('home'); }); });
以上程式碼中,我們在auth 中間件中註冊了預設的根路由/,當使用者登入成功後,會自動重定向到/home頁面中。
以上便是在 Laravel 中使用者登入和跳轉的方法。 Laravel 提供的身份認證功能,為我們快速實現使用者登入提供了極大的幫助。同時,透過控制器和路由兩種方式,我們也可以對使用者的跳轉進行細緻控制。
以上是laravel 登入 跳轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!