PHP'de Token ile Yetkilendirmeli API

API'nin herkese açık olması yerine, sadece şifre ile erişilebilir, özel olmasını sağlayabiliriz. Bu durumda, API'mize her istekte parametrelerin yanı sıra doğru şifreyi de iletmemiz gerekecek. Bu tür bir şifreye token (anahtar) denir.

API'mizin kullanıcılarının bu token'ı bir şekilde elde etmeleri gerekecek. Örneğin, satın alarak. Bu durumda satın alan herkesin kendi token'ı olacak.

Token'ların çalışmasını bir örnekle görelim. API'mizin bir parametre olarak bir sayı aldığını ve bu sayının karesini döndürdüğünü varsayalım. Bu API'yi özel yapalım. Haydi uygulamaya başlayalım.

Başlangıç olarak basitlik için, genel bir token yapalım ve onu açık bir şekilde bir dosyada saklayalım:

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

API'mize parametre ve token'ı şu şekilde ileterek erişeceğiz:

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

Token kontrolü ile API'yi uygulayalım:

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

Parametre olarak doğum günü tarihini alan ve bu tarihe kaç gün kaldığını döndüren bir API yapın. Token ile yetkilendirme yapın.

Задание 2

Önceki görevi, hem parametrenin hem de token'ın POST metodu ile iletilmesi şeklinde değiştirin.

Задание 3

Önceki görevi, token'ın X-Token HTTP başlığı ile iletilmesi şeklinde değiştirin.

Задание 4

Token'ların veritabanında saklanmasını ve her API kullanıcısının kendi token'ının olmasını sağlayın.

Задание 5

Her API kullanıcısının günlük istek sayısını 10 ile sınırlandırın.