Kullanıcı oturumları session olarak tutuluyor fakat API isteklerinde session mümkün değil. O yüzden kullanıcı giriş yaptıktan sonra o kullanıcıyı bir sonraki ve diğer isteklerde aktif olarak göstermenin bir yolunu bulmamız gerekiyor. Burada token authentication dediğimiz kimlik doğrulama sistemi devreye giriyor. Genel olarak mantığı şu şekilde:
- Kullanıcı adı ve şifre API uç noktasına gönderilir. Örneğin uç noktası /api/v1/login olsun.
- Kullanıcı tablosunda token ve bunun oluşturulma tarihini tutan bir alan olur. Örneğin o da token_date olsun. token alanı ise be3952cf2106ccb96b1f1d76b59914b4 gibi bir kod.
- Kullanıcı adı ve şifre uyuşursa token oluşturulur ve tarihi ile kullanıcı tablosuna işlenir. Karşılığnda token ve diğer bilgiler json olarak dönderilir.
İstek:
GET http://domain.com/api/v1/login?username=user@domain.com&password=12345678
Dönüş:
Giriş Başarılı
{
"status' : 1,
"token' : "be3952cf2106ccb96b1f1d76b59914b4",
}
Giriş Başarısız:
{
"status" : 0,
"message" : "Kullanıcı adı ya da şifre hatalı"
}
gibi.
token gelmişse kullanıcı başarı ile giriş yapmış demektir. Daha sonra diğer API uç noktalarına istek gönderilirken bu token da dahil edilir. Örneğin:
GET http://domain.com/api/v1/tasks?token=be3952cf2106ccb96b1f1d76b59914b4
ya da headera eklenir, örneğin OAuth'da Bearer olarak headera eklenir.
İçeride bu tokenı kullanıcı tablosunda var mı yok mu kontrol edersiniz. Bunların bir de geçerlilik süresi olur. Örneğin 10 dk. Genellikle istek gönderildiğinde token hala ölmediyse süresi 10 dk daha uzatılarak kullanıcının oturumunun kapanmasına engel olunur.
Çok basit anlattım ama genel olarak konsept budur. JWT ve Laravel Pasaport bunu ve çok daha fazlasını yapmanıza olanak sağlar.