NexJS client ve NodeJS api uygulamasında JWT auth işlemleri nasıl olmalı?
Bir nodejs api uygulamam birde nextjs13 app dir client uygulamam var.
Login veya register olduğum zaman register oluyorum ve mesaj olarak 200 ok res ile beraber tokeni dönüyorum. Devamında belli başlı işlemler için bir AuthMiddleware oluşturdum ve burada verify + decode ediyor ve token expire olmuşsa geçersiz token dönüyorum, geçerliysede ilgili router'ın işini yapmasına izin veriyorum.
Buraya kadar bir sorun yok. Sunucumda sonra olarak /api/verify/token şeklinde bir endpoint oluşturdum ve burayada sunucu tarafında AuthMiddleware ekledim, token kontrolü yapıyorum eğer token geçerliyse bu endpoint üzerinden username, role(müşteri, admin vb.), mail adresi, tokenin şifreli versiyonu gibi şeyleri dönüyorum.
Anlamadığım nokta şu nextjs tarafında nasıl bu verify endpointini kullanarak sunucuyu oturumda tutacağım ve yetkisi olmayan sayfalara girmesini engelleyeceğim? Örneğin role müşteri ise sadece /user, /user/reports gibi sayfalara girebilmesini istiyorum. /admin ise sadece admin rolündeki bir kullanıcı girebilsin istiyorum.
Bir çok çözüm denedim fakat bir türlü kullanıcıyı oturumda tutarak protected routing yapamıyorum.
Ek olarak login işlemi sırasında httpOnly bir cookie oluşturuyor ve tokeni içerisine koyup cookiyede token ile aynı uzunlukla bir expire date belirliyorum.
Bunların totalini client tarafında nasıl birleştirip oturum işlemlerini yapabileceğimi çözemedim.
Amacım her sayfa değiştiğinde üyenin tokenini kontrol etmek ve token ile bağlantılı kullanıcının bilgilerine göre işlem yapabilmesini sağlamak.
iki yolu var serverde rol kontrolü sağlayan bir middleware yazman,
ya da server tarafindan gelen role bilgisini clientde protected route yapisiyla handle etmen lazim,
protected route icin tayfun abinin 2-3 videosu var react router v6 icin bir video cekmisti onu nexte uyarlayabilirsin yada insta clone serisinde firebase isleminds detayli anlatmisti bakabilirsin.