လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Password_needs_Rehash ကို Laravel project ကိုအဆင့်မြှင့်တင်ရန်နှင့် password ကိုမြှင့်တင်ရန်နှင့်ပိုမိုကောင်းမွန်စေရန် Laravel Project တွင်မည်သို့ပေါင်းစပ်ရမည်နည်း။

Password_needs_Rehash ကို Laravel project ကိုအဆင့်မြှင့်တင်ရန်နှင့် password ကိုမြှင့်တင်ရန်နှင့်ပိုမိုကောင်းမွန်စေရန် Laravel Project တွင်မည်သို့ပေါင်းစပ်ရမည်နည်း။

gitbox 2025-06-24

ဟုတ်ပါတယ်, PHP ဘာသာစကားဖြင့်ရေးသားထားသောဆောင်းပါးသည်သင်တောင်းခံထားသောဆောင်းပါးသည်ယခင်ဆီလျော်သောအစိတ်အပိုင်းများနှင့်အဓိကစာသားများအကြားအလျားလိုက်မျဉ်းကြောင်းကိုထည့်သွင်းထားသည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-comment">// ဤစာရွက်စာတမ်းကိုနည်းပညာပိုင်းဆိုင်ရာမျှဝေခြင်းဆောင်းပါးအကြောင်းအရာအတွက်အသုံးပြုသည်,လက်တွေ့မကျပါ Laravel Controller သို့မဟုတ်မော်ဒယ်ကုဒ်</span></span><span>
</span><span><span class="hljs-comment">// ကျေးဇူးပြု. ဤဆောင်းပါးသည်ယုတ္တိဗေဒကိုသက်ဆိုင်ရာစီးပွားရေးယုတ္တိဗေဒသို့လိုက်လျောညီထွေဖြစ်အောင်လုပ်ပါ,login စိစစ်အတည်ပြုလျှင်、အသုံးပြုသူမော်ဒယ်နှင့်အခြားနေရာများ</span></span><span>

</span><span><span class="hljs-comment">// --------------------------------------------</span></span><span>

<span class="hljs-comment">/**
 * တည်နေ Laravel စီမံကိန်းတွင်မည်သို့ပေါင်းစည်းရမည်နည်း password_needs_rehash password ပေါ်လစီများ၏အဆင့်မြှင့်ခြင်းနှင့်ပိုကောင်းအောင်အောင်မြင်ရန်?
 *
 * တည်နေ现代 Web လျှောက်လွှာတွင်,စကားဝှက်စာဝှက်စနစ်မဟာဗျူဟာ၏အဆင့်မြှင့်တင်ခြင်းသည်အသုံးပြုသူအကောင့်လုံခြုံရေးကိုကာကွယ်ရန်သော့ချက်သော့ချက်ဖြစ်သည်。
 * PHP ထောက်ပံ့ `password_needs_rehash` 函数可以帮助我们တည်နေ用户登录时无缝地升级密码哈希方式,
 * နှင့် Laravel ၎င်းသည်အပြည့်အ 0 စကားဝှက်စစ်ဆေးခြင်းနှင့် encryption ယန္တရားတစ်ခုကိုလည်းထောက်ပံ့ပေးသည်。
 * 本文将介绍如何တည်နေ Laravel စီမံကိန်းအတွက်ပေါင်းစည်းမှု `password_needs_rehash` password ပေါ်လစီများ၏အဆင့်မြှင့်ခြင်းနှင့်ပိုကောင်းအောင်အောင်မြင်ရန်。
 *
 * တစ်、နားလည် password_needs_rehash ၏အခန်းကဏ်။
 *
 * `password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool`
 * 这个函数၏အခန်းကဏ်။ဟုတ်ကဲ့检查现有的密码哈希ဟုတ်ကဲ့否အသုံးပြု了当前指定的algorithmနှင့်参数。
 * လက်ရှိ hash သက်တမ်းကုန်သွားလျှင်(ဥပမာအားဖြင့်, algorithm ကွဲပြားခြားနားသည်,သို့မဟုတ်ကုန်ကျစရိတ် parameters တွေကိုတိုးမြှင့်ခဲ့ကြသည်),ဒီ function ကိုပြန်လာလိမ့်မယ် true。
 *
 * နှစ်、Laravel ပုံမှန်စကားဝှက်စာဝှက်ခြင်းယန္တရား
 *
 * Laravel အသုံးပြု `Hash` facade encapsulated Bcrypt နှင့် Argon2 algorithm,ပုံမှန်အားဖြင့် Bcrypt。
 * ဥပမာအားဖြင့်,စကားဝှက်စာဝှက်စနစ်ကိုမှတ်ပုံတင်သောအခါပုံမှန်အားဖြင့်ရေးသားလေ့ရှိသည်:
 *
 * ```php
 * $user-&gt;password = Hash::make($request-&gt;password);
 * ```
 *
 * 验证密码通常တည်နေ Auth 或手动အသုံးပြု:
 *
 * ```php
 * if (Hash::check($request-&gt;password, $user-&gt;password)) {
 *     // စကားဝှက်မှန်
 * }
 * ```
 *
 * သုံး、တည်နေ登录过程中ဘက်ပေါင်းစုံ password_needs_rehash
 *
 * 我们可以တည်နေ用户成功登录验证密码之后,rehash လိုအပ်လားစစ်ဆေးပါ,
 * လိုအပ်မယ်ဆိုရင်,就အသုံးပြု当前策略重新生成哈希并更新数据库。
 *
 * နမူနာကုဒ်အတိုင်းအောက်ပါအတိုင်းဖြစ်သည်(可以တည်နေ AuthController သို့မဟုတ်စိတ်ကြိုက် Guard အကောင်အထည်ဖော်):
 *
 * ```php
 * use Illuminate\Support\Facades\Hash;
 *
 * public function login(Request $request)
 * {
 *     $user = User::where('email', $request-&gt;email)-&gt;first();
 *
 *     if (! $user || ! Hash::check($request-&gt;password, $user-&gt;password)) {
 *         return response()-&gt;json(['message' =&gt; 'authentication မအောင်မြင်ပါ'], 401);
 *     }
 *
 *     // စကားဝှက်ကို re-encrypt လုပ်ထားရန်လိုအပ်လားစစ်ဆေးပါ
 *     if (password_needs_rehash($user-&gt;password, PASSWORD_BCRYPT, ['cost' =&gt; 12])) {
 *         $user-&gt;password = Hash::make($request-&gt;password);
 *         $user-&gt;save();
 *     }
 *
 *     // အောင်မြင်သော login ပြီးနောက်ယုတ္တိဗေဒ
 *     return response()-&gt;json(['message' =&gt; 'အောင်မြင်စွာဝင်ပါ']);
 * }
 * ```
 *
 * ဥပမာပြပါ:
 * - 这里我们手动အသုံးပြု了 `password_needs_rehash`,နှင့်不ဟုတ်ကဲ့ Laravel encapsulated Hash facade,
 *   ဘာဖြစ်လို့လဲဆိုတော့ `password_needs_rehash` ဟုတ်ကဲ့ PHP နောက်ခံ function ကို,需要传入明确的algorithm常量နှင့်参数。
 * - အထက်ပါဥပမာအတွက်သတ်မှတ်ထားသော `['cost' =&gt; 12]` ဟုတ်ကဲ့ bcrypt 的တစ်个安全参数(默认ဟုတ်ကဲ့ 10),သငျသညျသင့်လျော်သောဆာဗာစွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်နိုင်ပါတယ်。
 *
 * လေး、ဗဟို Encapsulation Logic,ကုဒ်မိတ္တူကိုရှောင်ပါ
 *
 * 为了避免တည်နေ多个地方重复写 `password_needs_rehash` တက်ဏဗေဒ,可以将其封装成用户模型中的တစ်个方法:
 *
 * ```php
 * // တည်နေ User.php မော်ဒယ်မှဆက်ပြောသည်
 * public function rehashPasswordIfNeeded(string $plainPassword): void
 * {
 *     if (password_needs_rehash($this-&gt;password, PASSWORD_BCRYPT, ['cost' =&gt; 12])) {
 *         $this-&gt;password = Hash::make($plainPassword);
 *         $this-&gt;save();
 *     }
 * }
 * ```
 *
 * အသုံးပြု时只需要调用:
 *
 * ```php
 * if (Hash::check($request-&gt;password, $user-&gt;password)) {
 *     $user-&gt;rehashPasswordIfNeeded($request-&gt;password);
 *     // login login ကိုဆက်လုပ်ပါ
 * }
 * ```
 *
 * ငါး、မဟာဗျူဟာအဆင့်မြှင့်အတွက်အကောင်းဆုံးအလေ့အကျင့်အကြံပြုချက်များ
 *
 * 1. **ဗဟိုပြင်ဆင်မှုကုန်ကျစရိတ် parameters တွေကို**:如အသုံးပြု Laravel 配置文件统တစ်管理 bcrypt cost,hard-coded ရှောင်ကြဉ်ပါ。
 * 2. **စွမ်းဆောင်ရည် overhead စောင့်ကြည့်လေ့လာခြင်း**:နှင့်အတူ cost ရာထူးတိုးမြှင့်ပေး,စကားဝှက်စစ်ဆေးမှုနှေးကွေးလိမ့်မည်。建议တည်နေ高并发场景下谨慎调整。
 * 3. **မိတ်ဆက်ခဲ့သည် Argon2 ထောက်**:Laravel ထောက် Argon2i နှင့် Argon2id,可တည်နေ `config/hashing.php` ဖွင့်。
 * 4. **အစုအဝေးတွင်စကားဝှက်**:ပုံမှန်ပြေးနိုင်ပါသည် Job တက်ကြွစွာအသုံးပြုသူများ၏ password hash ကိုတက်ကြွစွာအဆင့်မြှင့်တင်ပါ(မဖြစ်မနေ Non-)。
 *
 * ခေြာက်、ကောက်ချက်
 *
 * ဘက်ပေါင်းစုံ `password_needs_rehash` ဟုတ်ကဲ့实现渐进式密码策略升级的有效方式,
 * အသုံးပြုသူအတွေ့အကြုံကိုကြားဖြတ်လိမ့်မည်မဟုတ်ပါ,又能确保နှင့်အတူ安全标准的发展保持系统的健壮性。
 * အကူအညီနဲ့ Laravel 的灵活性နှင့် PHP နောက်ခံ function ကိုထောက်,ကျွန်ုပ်တို့သည် password Hashing မဟာဗျူဟာကိုဆင့်ကဲပြောင်းလဲမှုနှင့်အကောင်းမြင်မှုကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်。
 */</span>
</span></span>