လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ThinkPpP6 တွင် JWT authentication ကိုအကောင်အထည်ဖော်ရန်လမ်းညွှန်ဖြည့်စွက်

ThinkPpP6 တွင် JWT authentication ကိုအကောင်အထည်ဖော်ရန်လမ်းညွှန်ဖြည့်စွက်

gitbox 2025-07-14

JWT ဆိုတာဘာလဲ။

JWT (JSON Web Token) သည် network application များအကြားလုံခြုံသောသတင်းအချက်အလက်များကိုဖြတ်သန်းရန်အသုံးပြုသော encryption token ဖြစ်သည်။ ၎င်းသည် client နှင့် server အကြားရှိ JSON ရုပ်ဝတ်ထုပုံစံဖြင့်သတင်းအချက်အလက်များကိုလုံခြုံစွာထုတ်လွှင့်သည်။

jwt ဘယ်လိုအလုပ်လုပ်သလဲ

JWT တွင်အစိတ်အပိုင်းသုံးပိုင်း - header, payload နှင့် signature ပါဝင်သည်။

Header: Token ၏အမျိုးအစားနှင့် encryption algorithm ကိုကြေငြာသည်။ ဥပမာ -

 {
  "alg": "HS256",
  "typ": "JWT"
}

Payload: စံသတ်မှတ်ထားသောကြေငြာချက်များနှင့်စိတ်ကြိုက်ကြေငြာချက်များပါ 0 င်သည်။ ဥပမာ -

 {
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Signature - Base64 encloading header နှင့် payload နှင့်အတူ payload ကိုလက်မှတ်ထိုးခြင်းဖြင့် Generate ။

ThinkPpP6 တွင် JWT စိစစ်အတည်ပြုခြင်း

JWT extension ကို install လုပ်ပါ

Therephp6 တွင် JWT Verification ကိုအသုံးပြုရန်အတွက် JWT extension ကို install လုပ်ရန်လိုအပ်သည်။ စီမံကိန်းလမ်းညွှန်တွင် composer.json ဖိုင်တွင်အောက်ပါမှီခိုချက်များကိုထည့်ပါ။

 "require": {
  "firebase/php-jwt": "5.0.0"
}

ထို့နောက် JWT extension ကို install လုပ်ရန် composer install commin ကို run ပါ။

တိုကင် generate

အောင်မြင်စွာဝင်ရောက်ပြီးနောက်တွင်ကျွန်ုပ်တို့သည်လက်ခဏာသက်သေပြပြီး client သို့ပြန်ပို့နိုင်သည်။ နမူနာကုဒ်:

 use think\jwt\JWT;

public function login() {
  // လော့ဂ်အင်လုပ်ပါ
  $payload = [
    'sub' => $user->id,
    'name' => $user->username,
    'iat' => time()
  ];
  $token = JWT::encode($payload, $key);
  return json(['token' => $token]);
}

Token ကိုစစ်ဆေးပါ

အသုံးပြုသူ၏မည်သူမည်ဝါဖြစ်ကြောင်းအတည်ပြုရန်သင်မည်သည့်နေရာတွင်မဆိုသင်တိုကင်၏တရားဝင်မှုကိုအတည်ပြုရန် JWT ကိုသုံးနိုင်သည်။ နမူနာကုဒ်:

 use think\jwt\JWT;

public function getUser(Request $request) {
  $token = $request->header('Authorization');
  try {
    $payload = JWT::decode($token, $key, ['HS256']);
    $user = User::get($payload->sub);  // အသုံးပြုသူအချက်အလက်များကိုဒေတာဘေ့စ်မှရယူပါ
    return json($user);
  } catch (Exception $e) {
    return json(['error' => 'Token is invalid']);
  }
}

အကျဉ်းချုပ်

JWT သည်အဆင်ပြေလွယ်ကူပြီးလုံခြုံသော authentication နည်းလမ်းဖြစ်သည်။ MeterPhpP6 တွင် JWT authentication ကိုအကောင်အထည်ဖော်ရန်အလွန်ရိုးရှင်းပါသည်။ Tokens ထုတ်လုပ်ခြင်းနှင့်အတည်ပြုခြင်းလုပ်ငန်းစဉ်မှတဆင့်အသုံးပြုသူ၏မည်သူမည်ဝါဖြစ်ကြောင်းထိရောက်စွာကာကွယ်နိုင်သည်။ တစ်ချိန်တည်းမှာပင်လျှို့ဝှက်သော့ချက်ကိုကာကွယ်ခြင်းနှင့်သင့်တင့်သောတိုကင်၏သက်တမ်းကုန်ဆုံးချိန်ကိုအကာအကွယ်ပေးခြင်းသည်စနစ်လုံခြုံရေးကိုပိုမိုမြှင့်တင်ပေးနိုင်သည်။