روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ کیان سلگی
encode و decode کردن jwt با کدنویسی
جامعه پی اچ پی ایجاد شده در ۱۲ بهمن ۱۴۰۰

عرض سلام و احترام خدمت استاد گرامی و تمامی دوستان

یک سوال داشتم

ما برای ساخت و decode کردن jwt از پکیج firebase استقاده کردیم

داخل مقالات سون لرن یک مقاله هست که نحوه ساخت jwt با کد رو اموزش داده بود و مفید بود . حالا سوال بنده اینجاست که چطور میشه همون توکن که با کد نویسی خودمون ساختیم بدون استفاده از هیچ پکیجی decode کنیم.

در این مورد سراغ سورس کد firebase رفتم ولی از کدهاش چیزی متوجه نشدم.

سوال بعد هم این هست که داخل سورس کد firebase یک سری تابع صدا زده شده بود که قبل اسم اون توابع از علامت / استفاده شده بود که این علامت به چه معنا هست؟

یک سوال دیگه هم که داخل مستندات firebase نوشته شده بود برای decode کردن از تابع decode استفاده بشه و به عنوان پارامتر‌ها توکن jwt به عنوان پارامتر اول پاس داده بشه و پارامتر دوم یک شی از کلاس key اما داخل سورس کد به عنوان پارامتر یک متغیر پاس داده پس چرا از این کلاس یک شی ساخته؟

ممنون میشم راهنمایی کنید.

سلام.

۱. اکیدا توصیه شده برای وریفای کردن jwt از کتابخونه‌ها استفاده بشه.

۲ و ۳. مثال و لینکشو بذارید.

محسن موحد ۱۳ بهمن ۱۴۰۰، ۱۹:۰۰

سلام

در مورد سوال 2 لطفا لینک زیر خط 178 رو بررسی کنید

https://github.com/firebase/php-jwt/blob/main/src/JWT.php

سوال 3 هم داخل همین لینک خط 85 رو بررسی بفرمایید

در مورد سوال 3 هم داخل مستندات گفته شده به صورت زیر استفاده بشه

$decoded = JWT::decode($jwt, new Key($key, 'HS256'));

خیلی ممنون


کیان سلگی ۱۹ بهمن ۱۴۰۰، ۱۱:۵۴

سلام.

علامت \\ اشاره داره به global scope. ممکنه در namespace جار توابع همنامی با توابع هسته ی php معرفی شده باشه یا بعد‌ها اضافه بشه، بخاطر همین \\ گذاشته شده که مشخص کنه از scope گلوبال منظور هست.


برای سؤال بعدی phpdoc خود متد رو بخونید شاید سؤالتون برطرف بشه:

* Decodes a JWT string into a PHP object.
	     *
	     * @param string                    $jwt            The JWT
	     * @param Key|array    $keyOrKeyArray  The Key or associative array of key IDs (kid) to Key objects.
	     *                                                  If the algorithm used is asymmetric, this is the public key
	     *                                                  Each Key object contains an algorithm and matching key.
	     *                                                  Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
	     *                                                  'HS512', 'RS256', 'RS384', and 'RS512'
بهترین پاسخ
محسن موحد ۲۰ بهمن ۱۴۰۰، ۰۸:۰۴