什麼是認證
認證(Authentication)是確認發起存取的使用者「是誰」的機制。 在 Web 應用程式中,會透過登入表單接收電子郵件與密碼,若正確則將使用者資訊儲存到 Session。 後續請求會參照該 Session 來識別使用者。 Laravel 的認證功能由「Guard」與「Provider」兩個概念組成。- Guard:定義每個請求如何驗證使用者。預設是
sessionguard,使用 Session 與 Cookie 來管理狀態。 - Provider:定義如何從資料庫取得使用者。預設使用 Eloquent。
認證的設定檔為
config/auth.php。預設設定即可對應大多數 Web 應用程式。透過啟動套件加入認證
在 Laravel 中,只要在使用laravel new 建立應用程式時選擇啟動套件,就能自動建構登入、註冊、密碼重設等認證功能。這是最推薦的方式。
1
建立應用程式
使用 Laravel 安裝器建立應用程式。過程中會出現選擇啟動套件的提示。啟動套件可從 React、Vue、Livewire、Svelte 中選擇。
請依團隊的技術堆疊挑選。
2
安裝前端相依套件
3
準備資料庫
確認 會套用包含
.env 檔案的資料庫設定後,執行 migration。users 表的初始 migration。4
啟動開發伺服器
http://localhost:8000,導覽列會顯示「Register」與「Log in」連結。
可以造訪 /register 註冊使用者試試看。可用的啟動套件
React
可建構使用 React 19、TypeScript、Tailwind、shadcn/ui 的現代 SPA。 透過 Inertia,能在保有伺服器端路由的同時使用 React 前端。Vue
採用 Vue Composition API、TypeScript、Tailwind、shadcn-vue。 與 React 同樣使用 Inertia 與伺服器端連動。Livewire
使用僅靠 PHP 即可建構動態 UI 的 Livewire。 最適合以 Blade 模板為主的團隊,或希望不使用 JavaScript 框架的場合。 內含 Flux UI 元件庫。Svelte
使用 Svelte 5、TypeScript、Tailwind、shadcn-svelte。 可與 Inertia 搭配建構現代 SPA。認證 Facade
使用Auth Facade 可取得目前已認證的使用者資訊,或確認認證狀態。
取得已認證的使用者
Request 物件取得使用者。
確認認證狀態
Auth::check() 會以 true / false 回傳使用者是否已登入。
@auth 與 @guest 指令會很方便。
保護路由
要建立只有已登入使用者能存取的路由,可以使用auth middleware。
/login。
若要一次保護多條路由,可使用群組。
訪客專用路由
要將已登入的使用者重新導向,可使用guest middleware。
將其套用在登入或註冊頁面,即可把已登入的使用者轉送至儀表板。
手動認證
若不使用啟動套件而想手動實作登入處理,可使用Auth::attempt()。
Auth::attempt() 的第 1 個參數傳入認證資訊陣列。
密碼會自動與雜湊值比對,因此請直接傳入明文。
若要實作「保持登入狀態」功能,於第 2 個參數傳入 true。
即使自行實作手動認證,也建議參考啟動套件的程式碼。可將其當作安全實作的範本。
登出
要讓使用者登出,呼叫Auth::logout()。
最佳做法是同時使 Session 失效並重新產生 CSRF Token。
總結
下一步
Middleware
詳細了解
auth middleware 的機制與自訂 middleware 的建立方式。