سرفصل‌های آموزشی
آموزش RESTful API
راهنمای نصب PHP-JWT

راهنمای نصب PHP-JWT

به منظور استفاده از توکن‌ها برای اعتبارسنجی کاربران در زبان پی‌اچ‌پی، یک لایبرری اپن‌سورس تحت عنوان 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 استفاده نمود.

online-support-icon