به منظور استفاده از توکنها برای اعتبارسنجی کاربران در زبان پیاچپی، یک لایبرری اپنسورس تحت عنوان PHP-JWT عرضه شده است که این امکان را در اختیار دولوپرهای این زبان میگذارد تا به سادگی بتوانند از JWT در پروژههای خود استفاده نمایند و ما هم قصد داریم تا در این دورهٔ آموزشی از این لایبرری استفاده نماییم. برای این منظور، صرفاً نیاز است تا کامند زیر را در مسیر روت پروژه اجرا نماییم:
/var/www/rest-api-blog$ composer require firebase/php-jwt
پس از تکمیل پروسهٔ فوق اگر نگاهی به فایل composer.json
بیندازیم، خواهیم داشت:
{
"autoload": {
"psr-4": {
"Core\\": "app/Core",
"Api\\": "app/Api"
}
},
"require": {
"firebase/php-jwt": "^5.0"
}
}
میبینیم که کلید جدیدی تحت عنوان require
اضافه شده که فعلاً اطلاعات این لایبرری در آن به ثبت رسیده است به طوری که از این پس به سادگی قادر خواهیم بود تا کلاسهای این لایبرری در پروژهٔ خود استفاده نماییم با این توضیح که اُتولودر به صورت خودکار کلاسهای مورد استفاده را در پروژه ایمپورت خواهد کرد.
همچنین پس از اجرای کامند فوق، فایل دیگری به صورت خودکار توسط کامپوزر ایجاد میشود به نام composer.lock
که حاوی دیتای زیر خواهد بود:
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "7f97fc9c4d2beaf06d019ba50f7efcbc",
"packages": [
{
"name": "firebase/php-jwt",
"version": "v5.0.0",
"source": {
"type": "git",
"url": "https://github.com/firebase/php-jwt.git",
"reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/firebase/php-jwt/zipball/9984a4d3a32ae7673d6971ea00bae9d0a1abba0e",
"reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": " 4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"Firebase\\JWT\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Neuman Vong",
"email": "neuman+pear@twilio.com",
"role": "Developer"
},
{
"name": "Anant Narayanan",
"email": "anant@php.net",
"role": "Developer"
}
],
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
"homepage": "https://github.com/firebase/php-jwt",
"time": "2017-06-27T22:17:23+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}
در واقع، این فایل حاوی خلاصهای از تنظیمات، لایبرریهای مورد استفاده و ... در این پروژه است که با نصب کامپوننتهای جدید و یا تغییر در تنظیمات توسط کامپوزر، به صورت خودکار آپدیت خواهد شد.
هشدار |
از ایجاد هر گونه تغییر در این فایل به صورت دستی باید خودداری کرد. |
به علاوه اگر نگاهی به پوشهٔ vendor
بیندازیم، خواهیم دید که پوشهٔ جدید به نام firebase
حاوی فایلهای زیر در آن اضافه شده است:
firebase
└── php-jwt
├── composer.json
├── LICENSE
├── README.md
└── src
├── BeforeValidException.php
├── ExpiredException.php
├── JWT.php
└── SignatureInvalidException.php
در ادامهٔ آموزشها خواهیم دید که به چه شکل به منظور تأیید هویت کاربران این ایپیآی، میتوان از لایبرری PHP-JWT استفاده نمود.