ReactJS ve NodeJS hakkında aklıma takılanlar.
ReactJS bilgim yeterli düzeyde denebilir, Redux yapısını vs. biliyorum.
NodeJS'te ise bir API yapmışlığım var, az da olsa biliyorum sayılır.
Sormak istediğim şunlar:
1) Kullanıcı giriş yaptığında back-end'deki '/login' sayfasına istek atacak, dönen yanıta göre kullanıcı giriş yapmış olacak. Kullanıcının giriş yaptığı kullanıcı adı bilgisini bir state'e atayıp orada mı tutmalıyım ve diğer isteklerinde de bu state'i mi kullanmalıyım yoksa başka bir yöntem kullanılabilir mi?
2) Yine kullanıcı giriş yaptığında, back-end kısmında JWT'den üretilen tokeni React'te bir state'te mi tutmalıyım ve istek atarken yine bu state'i mi kullanmalıyım?
3) Bazı sayfaların da sadece üye girişi yapmış olanların veya admin yetkisine sahip olanların görüntülemesini istiyorum. Bunun için yine state'te tuttuğum kullanıcı adı bilgisini kullanıp veritabanında sorgu mu yaptırmalıyım? Veya başka bir yolu var mı?
Bu konular hakkında yardımcı olanlara şimdiden teşekkürler.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Login işlemi için back-end'e istek attığında, backend'den iki şey döneceksin.
- JWT token
- Kullanıcı Datası
React tarafında token
değerini state'de tutacaksın. State'e eklerken aynı zamanda localStorage
'a da ekleyeceksin.
Kullanıcı datasını da yine state'de tutacaksın ancak localStorage'a eklemene gerek yok.
Çünkü her sayfa yenilendiğinde ilk başta token değerin varsa gidip /user-info
gibi bir end-point'e token'ı gönderip bu kullanıcının geçerli olup olmadığına bakacaksın.
Eğer token geçerliyse kullanıcı bilgileri dönecek, geçersizse react tarafında token'ı silip kullanıcının oturumunu sonlandıracaksın.
Eğer rol bazlı işlemler yapacaksan, users
tablonda role
ya da permissions
gibi kolonların olabilir. User bilgisini döndürürken bunu state'de tutacağın için, projende istediğin yerde admin'se göster değilse gösterme gibi komutlar yazabilirsin.
Zaten backend'e istek attığında admin olup olmadığını orada da kontrol edeceğin için sorun olmayacaktır.
react-auth-kit adlı kütüphaneyi kullanmanı öneririm. https://authkit.arkadip.dev/installation/