使用 Laravel Passport 實作 PHP 安全驗證
簡介:
在現代的 Web 開發中,使用者驗證和授權是非常重要的安全功能。 Laravel Passport 是一個基於 OAuth2 的身份驗證工具,可幫助我們輕鬆實現使用者認證和授權功能。本文將介紹如何使用 Laravel Passport 在 PHP 中實現安全驗證。
步驟:
安裝 Laravel Passport
首先,請確保已經安裝了 Laravel 框架。接下來,在終端機中進入專案目錄,並執行以下命令來安裝Laravel Passport 套件:
composer require laravel/passport
#安裝成功後,執行下面的命令來發布套件所需的檔案和資料庫遷移:
php artisan passport:install
配置Passport
開啟config/app.php
文件,在providers
陣列中新增以下服務提供者:
LaravelPassportPassportServiceProvider::class,
然後,在app/Http/Kernel.php
檔案中的$routeMiddleware
陣列中,加入以下中間件:
'client' => LaravelPassportHttpMiddlewareCheckClientCredentials::class,
最後,在app /User.php
檔案中新增Passport
的HasApiTokens
trait:
use LaravelPassportHasApiTokens;
並在類別的trait
陣列中引入:
use HasApiTokens;
現在,我們已經成功配置了Laravel Passport。
建立使用者認證介面
首先,我們需要建立一個控制器來處理使用者認證請求。可以執行以下命令來產生一個新的控制器:
php artisan make:controller AuthController
然後,在AuthController
中新增以下方法來處理註冊和登入請求:
use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; class AuthController extends Controller { public function register(Request $request) { // 验证请求数据 $request->validate([ 'name' => 'required|unique:users', 'email' => 'required|email|unique:users', 'password' => 'required|min:6' ]); // 创建用户 $user = User::create([ 'name' => request('name'), 'email' => request('email'), 'password' => bcrypt(request('password')), ]); // 生成访问令牌 $token = $user->createToken('accessToken')->accessToken; // 返回响应 return response()->json(['token' => $token], 200); } public function login(Request $request) { // 验证请求数据 $credentials = request(['email', 'password']); // 检查用户凭据 if (!Auth::attempt($credentials)) { return response()->json(['message' => 'Unauthorized'], 401); } // 获取当前用户 $user = $request->user(); // 生成访问令牌 $token = $user->createToken('accessToken')->accessToken; // 返回响应 return response()->json(['user' => $user, 'token' => $token], 200); } }
#建立路由
開啟routes/api.php
文件,並新增以下路由:
Route::post('register', 'AuthController@register'); Route::post('login', 'AuthController@login')->middleware('client');
使用Passport 守衛
開啟 config/auth.php
文件,並將api
守衛的驅動程式更改為passport
:
'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
使用認證用戶
現在,我們可以使用auth:api
中間件來驗證使用者身分並保護相關的API 路由。例如,在AuthController
中,可以新增以下路由:
public function profile() { $user = Auth::user(); return response()->json(['user' => $user], 200); }
然後,在routes/api.php
中,新增以下路由:
Route::get('profile', 'AuthController@profile')->middleware('auth:api');
這樣,在存取/api/profile
路由時,會要求使用者先提供有效的身份驗證令牌。
總結:
本文詳細介紹如何使用 Laravel Passport 實作 PHP 安全驗證。透過安裝和設定 Laravel Passport,我們可以快速實現使用者認證和授權功能,並保護我們的 API 路由。希望本文對使用 Laravel Passport 進行身份驗證的開發人員有所幫助。
以上是使用 Laravel Passport 實現 PHP 安全驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!