Arkadaşlar selam, bir süredir üzerinde çalıştığım bir Laravel projesinde middleware ile yetkilendirme yaparken garip bir hatayla karşılaştım, paylaşayım dedim. Projede kullanıcı rollerine göre sayfalara erişimi kontrol etmek için özel bir middleware yazdım. Middleware'de kullanıcının rolünü kontrol ediyorum, eğer yetkisi yoksa 403 döndürüyorum. Ama işin ilginç yanı, tamamen aynı role sahip iki farklı kullanıcıdan biri sayfaya rahatça erişirken diğeri "403 Forbidden" hatası alıyor. İlk başta veritabanındaki rol atamalarını kontrol ettim, her şey normal görünüyor. Kullanıcı modellerini bile dump edip karşılaştırdım, rol id'leri birebir aynı. Bu noktada middleware'in kendisinde bir sorun olabileceğini düşünüyorum.
Middleware kodumu şöyle yazmıştım: handle fonksiyonunda gelen request'teki kullanıcının rolünü kontrol ediyorum, yetki yoksa abort(403) çağırıyorum. Ama hatayı alan kullanıcıda, middleware içinde dd() ile kullanıcıyı bastığımda rolün doğru geldiğini görüyorum, ama yine de yetkilendirme koşulu sağlanmıyor gibi bir durum var. Acaba session veya cache kaynaklı bir sorun mu? Çünkü hatayı alan kullanıcının tarayıcısını temizleyip tekrar denediğimde bazen düzeliyor. Laravel'de middleware'de bu tarz bir davranışla karşılaşan oldu mu? Yoksa ben mi bir yerde hata yapıyorum?
Ek olarak, bu hatanın sadece belirli bir rolde değil, bazen admin rolündeki kullanıcılarda bile olduğunu fark ettim. Yani rastgele bir şekilde ortaya çıkıyor. Route tanımlamalarını da kontrol ettim, middleware gruplarını doğru atadığıma eminim. Ama yine de bu tutarsızlık canımı sıkıyor. Belki middleware'in çalışma sırasıyla ilgili bir şeydir, mesela başka bir middleware bu kontrolü etkiliyor olabilir mi? Veya Laravel'in kernel'deki middleware öncelikleriyle mi ilgili? Sizce neyi yanlış yapıyor olabilirim? Benzer bir sorun yaşayan varsa çözüm önerilerini duymak isterim. Şimdiden teşekkürler.
Middleware kodumu şöyle yazmıştım: handle fonksiyonunda gelen request'teki kullanıcının rolünü kontrol ediyorum, yetki yoksa abort(403) çağırıyorum. Ama hatayı alan kullanıcıda, middleware içinde dd() ile kullanıcıyı bastığımda rolün doğru geldiğini görüyorum, ama yine de yetkilendirme koşulu sağlanmıyor gibi bir durum var. Acaba session veya cache kaynaklı bir sorun mu? Çünkü hatayı alan kullanıcının tarayıcısını temizleyip tekrar denediğimde bazen düzeliyor. Laravel'de middleware'de bu tarz bir davranışla karşılaşan oldu mu? Yoksa ben mi bir yerde hata yapıyorum?
Ek olarak, bu hatanın sadece belirli bir rolde değil, bazen admin rolündeki kullanıcılarda bile olduğunu fark ettim. Yani rastgele bir şekilde ortaya çıkıyor. Route tanımlamalarını da kontrol ettim, middleware gruplarını doğru atadığıma eminim. Ama yine de bu tutarsızlık canımı sıkıyor. Belki middleware'in çalışma sırasıyla ilgili bir şeydir, mesela başka bir middleware bu kontrolü etkiliyor olabilir mi? Veya Laravel'in kernel'deki middleware öncelikleriyle mi ilgili? Sizce neyi yanlış yapıyor olabilirim? Benzer bir sorun yaşayan varsa çözüm önerilerini duymak isterim. Şimdiden teşekkürler.