Amir Alsaeed نشر 8 يونيو 2021 أرسل تقرير نشر 8 يونيو 2021 عند تسجيل الدخول إلى التطبيق وفك تشفير كلمة المرور يظهر لدي الخطأ التالي: The payload is invalid. #0 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php(136): Illuminate\Encryption\Encrypter->getJsonPayload(NULL) #1 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php(164): Illuminate\Encryption\Encrypter->decrypt('eyJpdiI6InloT0U...', false) #2 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\Encryption\Encrypter->decryptString('eyJpdiI6InloT0U...') #3 /home/improojf/public_html/app/Models/Server.php(29): Illuminate\Support\Facades\Facade::__callStatic('decryptString', Array) #4 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(473): Server->getPasswordAttribute('eyJpdiI6InloT0U...') مع العلم أن هذه المشكلة تحدث فقط لعدد محدد من المستخدمين، أما بقية المستخدمين فلا تظهر أي رسالة خطأ عند فك تشفير كلمة المرور. كيف أستطيع حل هذه المشكلة؟ اقتباس
0 Adnane Kadri نشر 8 يونيو 2021 أرسل تقرير نشر 8 يونيو 2021 يحدث المشكل أحيانا بسبب محاولة فك تشفير نص إما غير مشفر من الأساس أو قد فك تشفيره قبل ذلك . مثال : إن كنت تستخدم مسترجع أو معدل Mutator على خاصية كلمة المرور في ملف النموذج : public function getPasswordAttribute($value) { return Crypt::decryptString($value); } ثم تقوم بقراءتها على هذا النحو : $pass = Crypt::decryptString($user->password); سيؤدي هذا إلى ظهور المشكل لأننا نحاول فك التشفير مرتين , و بالتالي و لحل المشكل تأكد أنك لا تقوم بذلك أو بأي عملية بنفس المنطق . إن لم يحل هذا مشكلتك يرجى إرفاق الكود المسبب للمشكلة حتى يتم النظر فيه بشكل أكثر دقة . يمكنك القراءة عن إرشادات طرح الأسئلة . اقتباس
1 Sam Ahw نشر 8 يونيو 2021 أرسل تقرير نشر 8 يونيو 2021 وفقاً للتوثيق الرسمي في لارافل، إن جميع القيم المشفرة في لارافل يتم تشفيرها من خلال مايعرف بـ MAC - message authentication code. ولذلك لا يمكن تغيير التشفير لقيمة تم تشفيرها مسبقاً من خلال مشروع آخر. أي بمعنى آخر، قد تحدث المشكلة نتيجة لتغيير المفتاح في المشروع، ويتم ذلك عادة عند نقل المشاريع أو نسخ الأكواد بين مشروع وآخر، وبالتالي يتغيّر App Key في مشروع لارافيل وعند التعامل مع البيانات المخزّنة مسبقاً في قاعدة البيانات والتي تم تشفيرها من خلال مشروع آخر تحدث هذه المشكلة لأنه لا يمكن لقيمة App key الجديدة من فك تشفير البيانات السابقة والتي تم حفظها بشكل مشفّر مسبقاً من خلال المفتاح السابق. مما قد يؤدي أيضاً في حالتك لتشفير بعض البيانات في القاعدة بمفتاح وبيانات أخرى بمفتاح آخر وهي التي في حالتك تظهر فيها هذه المشكلة عدى عن الأخرى. لذلك يجب التأكد من قيمة App Key عند نقل المشاريع التي يتم التعامل فيها مع نفس البيانات على خوادم قواعد البيانات. ومن إحدى المشاكل التي قد تطرأ أيضاً اختلاف أنماط تخزين كلمة المرور بين قاعدة بيانات وأخرى بين نسخ لارافل من النمط varchar(191) والتي بدورها لا تستطيع تخزين كامل القيمة المشفرة لكلمة المرور بل يتم تخزين جزء منها فقط. لذلك ينصح أيضاً عند التعامل مع مشاريع مختلفة أو نسخ مختلفة تحويل حقل كلمة المرور إلى النمط longtext أو text وخاصةً عندما تكون كلمات المرور غير محددة الطول. 1 اقتباس
السؤال
Amir Alsaeed
عند تسجيل الدخول إلى التطبيق وفك تشفير كلمة المرور يظهر لدي الخطأ التالي:
The payload is invalid. #0 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php(136): Illuminate\Encryption\Encrypter->getJsonPayload(NULL) #1 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php(164): Illuminate\Encryption\Encrypter->decrypt('eyJpdiI6InloT0U...', false) #2 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\Encryption\Encrypter->decryptString('eyJpdiI6InloT0U...') #3 /home/improojf/public_html/app/Models/Server.php(29): Illuminate\Support\Facades\Facade::__callStatic('decryptString', Array) #4 /home/improojf/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(473): Server->getPasswordAttribute('eyJpdiI6InloT0U...')
مع العلم أن هذه المشكلة تحدث فقط لعدد محدد من المستخدمين، أما بقية المستخدمين فلا تظهر أي رسالة خطأ عند فك تشفير كلمة المرور.
كيف أستطيع حل هذه المشكلة؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.