首頁  >  文章  >  後端開發  >  使用 Laravel Passport 實現 PHP 安全驗證

使用 Laravel Passport 實現 PHP 安全驗證

王林
王林原創
2023-07-25 21:33:241379瀏覽

使用 Laravel Passport 實作 PHP 安全驗證

簡介:
在現代的 Web 開發中,使用者驗證和授權是非常重要的安全功能。 Laravel Passport 是一個基於 OAuth2 的身份驗證工具,可幫助我們輕鬆實現使用者認證和授權功能。本文將介紹如何使用 Laravel Passport 在 PHP 中實現安全驗證。

步驟:

  1. 安裝 Laravel Passport
    首先,請確保已經安裝了 Laravel 框架。接下來,在終端機中進入專案目錄,並執行以下命令來安裝Laravel Passport 套件:

    composer require laravel/passport

    #安裝成功後,執行下面的命令來發布套件所需的檔案和資料庫遷移:

    php artisan passport:install
  2. 配置Passport
    開啟config/app.php 文件,在providers 陣列中新增以下服務提供者:

    LaravelPassportPassportServiceProvider::class,

    然後,在app/Http/Kernel.php 檔案中的$routeMiddleware 陣列中,加入以下中間件:

    'client' => LaravelPassportHttpMiddlewareCheckClientCredentials::class,

    最後,在app /User.php 檔案中新增PassportHasApiTokens trait:

    use LaravelPassportHasApiTokens;

    並在類別的trait 陣列中引入:

    use HasApiTokens;

    現在,我們已經成功配置了Laravel Passport。

  3. 建立使用者認證介面
    首先,我們需要建立一個控制器來處理使用者認證請求。可以執行以下命令來產生一個新的控制器:

    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);
     }
    }
  4. #建立路由
    開啟routes/api.php 文件,並新增以下路由:

    Route::post('register', 'AuthController@register');
    Route::post('login', 'AuthController@login')->middleware('client');
  5. 使用Passport 守衛
    開啟 config/auth.php 文件,並將api 守衛的驅動程式更改為passport

    'guards' => [
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
    ],
  6. 使用認證用戶
    現在,我們可以使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn