作為一種開源的 php web 框架,laravel 一直以來都備受 web 開發者的青睞。其強大的功能與易用性皆為其優勢。對于一個 web 應用來說,登錄是非常基礎的功能之一。在 laravel 中,我們可以很快地實現用戶登錄,并且進行跳轉。
下面,我們就來講一下 Laravel 中用戶登錄和跳轉的實現方法。
前置條件
在開始編寫代碼之前,我們首先需要確保以下條件:
- 擁有 Laravel 環境;
- 已經開啟了 Laravel 的身份認證功能。
如果你還沒有開啟 Laravel 的身份認證功能,可以在終端里進入到項目根目錄并輸入以下命令:
php artisan make:auth
對于已經開啟身份認證功能的 Laravel 項目,我們便可以按照以下步驟進行實現。
用戶登錄
在 Laravel 中,我們可以通過表單來獲取用戶輸入的用戶名和密碼。一般而言,我們會在表單中設置為 Post 方法,并且提交到一個叫做 LoginController 的控制器中,如下代碼所示:
當用戶填寫完表單信息后,點擊“登錄”按鈕,便會提交數據到 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 提供的身份認證功能,為我們快速實現用戶登錄提供了極大的幫助。同時,通過控制器和路由兩種方式,我們也可以對用戶的跳轉進行細致控制。