首頁 > php框架 > Laravel > 主體

laravel中jwt怎麼用

王林
發布: 2023-05-21 10:40:07
原創
1961 人瀏覽過

隨著API的不斷發展,越來越多的Web應用程式需要使用JSON Web Tokens(JWT)來實現使用者認證和授權。而Laravel作為一個開發API的首選框架,也支援JWT。本文將介紹Laravel如何使用JWT。

什麼是JWT?

JSON Web Token(JWT)是一種開放式標準(RFC 7519),用於在各方之間安全地將聲明傳輸為JSON物件。 JWT可以用於授權、身份驗證和資訊交換。 JWT通常在HTTP請求的Authorization頭中作為Bearer令牌傳輸。

JWT的結構由三個部分組成:頭部、負荷和簽名。頭部和載重都是JSON對象,簽名是將這兩個部分結合起來加密的結果。由於JWT的結構非常簡單,因此可以輕鬆地解析和驗證。

如何在Laravel使用JWT?

使用JWT需要在Laravel專案中安裝下列依賴函式庫:tymondesigns/jwt-auth。在Laravel 5.7及更高版本中,可以使用以下指令安裝此依賴函式庫:

composer require tymon/jwt-auth
登入後複製

安裝完成後,需要在config/app.php檔案中加入以下服務提供者和別名:

'providers' => [
    // Other Service Providers
    TymonJWTAuthProvidersLaravelServiceProvider::class,
],

'aliases' => [
    // Other Aliases
    'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class,
    'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class,
],
登入後複製

接下來,需要產生JWT的金鑰。可以使用以下指令產生金鑰:

php artisan jwt:secret
登入後複製

這個指令會產生一個隨機的金鑰,並將其加入到config/jwt.php檔案中。很重要的一點是,需要保護好該密鑰,不要洩漏給任何人。

產生金鑰後,可以開始在Laravel中使用JWT。 JWT可以用於身份驗證和授權。

使用JWT進行驗證

在Laravel中使用JWT進行驗證的流程如下:

  1. 使用者提交其憑證(例如,使用者名稱和密碼)。
  2. 應用程式使用這些憑證來產生一個JWT,並將其傳回給使用者。
  3. 使用者在接下來的請求中將該JWT包含在Authorization頭中,作為Bearer令牌。
  4. 應用程式從JWT中提取使用者訊息,並驗證其身份。

產生JWT並傳回給使用者的程式碼如下:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (!$token = JWTAuth::attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return response()->json(['token' => $token]);
}
登入後複製

驗證JWT並擷取使用者資訊的程式碼如下:

public function profile(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    return response()->json(['user' => $user]);
}
登入後複製

使用JWT進行授權

#在Laravel中使用JWT進行授權的過程如下:

  1. 應用程式在使用者存取受保護的資源之前,先驗證其身分。
  2. 如果使用者已經通過身份驗證,則應用程式檢查該JWT是否包含適當的角色或權限。
  3. 如果使用者擁有適當的角色或權限,則應用程式授予其存取所要求的資源。

驗證JWT並檢查使用者的角色或權限的程式碼如下:

public function index(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    if ($user->hasRole('admin')) {
        $items = Item::all();
    } else {
        $items = Item::where('user_id', '=', $user->id)->get();
    }

    return response()->json(['items' => $items]);
}
登入後複製

#要注意的是,這裡的hasRole()方法是自訂方法,需要在User模型中實現。

總結

本文介紹了在Laravel中使用JWT進行身份驗證和授權的過程。 JWT提供了一種安全、簡單且可擴展的使用者身份驗證機制,能夠保護應用程式免受各種攻擊。如果你正在開發一個需要API的Web應用程序,那麼使用JWT是一個不錯的選擇。

以上是laravel中jwt怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板