Temel Kavramlar
Kimlik Doğrulama
API, JWT bearer token ile çalışır. Önce login ile
token alınır, sonra korumalı her istekte bu token bir başlıkta gönderilir.
Akış
1
Login isteği
POST /api/auth/login — Anonim
LoginRequest{
"loginIdentifier": "test_kullanici",
"password": "sifre123"
}
2
Token ve kullanıcı bilgisi döner
LoginResponse (data){
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6...",
"expiresOnUtc": "2026-07-25T18:30:00Z",
"user": { "...": "AuthenticatedUserResponse" }
}
3
Token'ı sonraki isteklerde gönder
Authorization: Bearer <accessToken>
Request alanları — LoginRequest
| Alan | Tip | Açıklama |
|---|---|---|
loginIdentifier | string | Kısa kullanıcı adı veya e-posta. |
password | string | Kullanıcı şifresi. |
Cevap alanları — LoginResponse
| Alan | Tip | Açıklama |
|---|---|---|
accessToken | string | JWT bearer token. Korumalı isteklerde Authorization başlığında gönderilir. |
expiresOnUtc | string (UTC datetime) | Token'ın geçerlilik bitiş anı (UTC). Bu andan sonra yeniden login gerekir. |
user | AuthenticatedUserResponse | Giriş yapan kullanıcının özet bilgisi (aşağıda). |
AuthenticatedUserResponse
| Alan | Tip | Açıklama |
|---|---|---|
id | int | Kullanıcının ID'si. |
uniqueIdentifier | guid | Kullanıcının benzersiz ID'si. |
email | string | E-posta adresi. |
username | string | Kısa kullanıcı adı. |
nameSurname | string | Ad soyad. |
grade | int | Sınıf düzeyi. |
studyRoomId | int | Bağlı olduğu çalışma odası (study room) ID'si. |
currentWpm | int | Güncel okuma hızı (kelime/dakika). |
isPasswordSet | bool | Kullanıcının şifresi ayarlanmış mı. |
Hangi endpoint token ister?
| Erişim | Endpointler |
|---|---|
| Anonim | POST /api/auth/login, GET /api/health |
| Bearer | Diğer tüm public endpointler (me, paragraphs, assignments, game-sessions). |
Token yoksa veya geçersizse: 401
Korumalı bir endpoint'e token göndermeden ya da süresi dolmuş/geçersiz token ile
gidersen, API HTTP 401 Unauthorized döner. Bu durumda cevap
ApiResponse zarfında gelmez — doğrudan 401 statüsüdür.
Çözüm: yeniden login olup yeni token al.
Unity örneği
UnityWebRequest ile korumalı çağrıvar req = UnityWebRequest.Get("https://<api-adresi>/api/me/profile");
req.SetRequestHeader("Authorization", "Bearer " + accessToken);
yield return req.SendWebRequest();
// req.downloadHandler.text -> ApiResponse<MeProfileResponse> JSON
Token süresi dolunca
expiresOnUtc'yi istemcide takip et; geçmeden ya da 401 alınca
yeniden login ol. (Şu an ayrı bir refresh-token endpoint'i yoktur.)