API hitelesítéssel PHP-ben

Lehetőség van arra, hogy az API ne nyilvános, hanem zárt legyen, csak jelszóval hozzáférhető. Ebben az esetben, amikor az API-nkhoz fordulunk, minden kérésben a paraméterek mellett a helyes jelszót is át kell adnunk. Ezt a jelszót tokennak hívják.

API-nk felhasználóinak valahogy meg kell szerezniük ezt a tokent. Például megvásárolhatják. Ebben az esetben minden vásárlónak saját tokenje lesz.

Nézzük meg a tokenek használatát egy példán keresztül. Tegyük fel, hogy API-nk paraméterként egy számot fogad el, és visszaadja ennek a számnak a négyzetét. Tegyük ezt az API-t zártá. Kezdjük el a megvalósítást.

Kezdetben az egyszerűség kedvéért készítsünk egy közös tokent, és tároljuk nyílt formában egy fájlban:

api.loc/index.php<?php
  $token = '12345';
?>

Így fognak hozzáférni az API-nkhoz, átadva a paramétert és a tokent:

urlhttp://api.loc/index.php?num=100&token=12345

Valósítsuk meg az API-t token ellenőrzéssel:

api.loc/index.php<?php
  $token = '12345';
  
  if (isset($_GET['token']) and $_GET['token'] === $token) {
    if (isset($_GET['num'])) {
      echo $_GET['num'] ** 2;
    } else {
      echo 'error';
    }
  } else {
    echo 'incorrect token';
  }
  
?>
Задание 1

Készítsen egy API-t, amely paraméterként egy születésnap dátumát fogadja, és visszaadja, hány nap van hátra eddig a dátumig. Valósítson meg tokenes hitelesítést.

Задание 2

Módosítsa az előző feladatot úgy, hogy mind a paraméter, mind a token POST metódussal legyen átadva.

Задание 3

Módosítsa az előző feladatot úgy, hogy a token egy X-Token HTTP fejlécen keresztül legyen átadva.

Задание 4

Állítsa be úgy, hogy a tokenek adatbázisban legyenek tárolva, és minden API felhasználónak saját tokenje legyen.

Задание 5

Korlátozza minden API felhasználó lekérdezéseinek számát 10 re naponta.