munzevi
Sanctum'ı aynı domain altında yer alan bir frontend aracılığıyla kullanacaksanız token değil session kullanmanız gerekiyor. Eğer token kullanırsanız Sanctum'ın ortaya çıkma amacına karşı gelmiş oluyorsunuz. Sanctum'ın amacı aynı domain altında yer alan API ve frontend'in token ile cebelleşmeden cookie ile haberleşebilmesini sağlamaktı. Elbette bu API'ı başka bir yerden kullanan bir tüketici (mesela mobil uygulama) de olabileceği için içerisinde basit bir token-based auth da bulunuyor. Taylor'ın token kullanılması ile ilgili tepkisi şudur: Sanctum kullanacaksanız ve login olan tüketici aynı ana domain altında yer alıyorsa token-based kullanmamalısınız.
Safari ile ilgili sorun da yaptığım araştırmaya göre Safari 13 ile ortaya çıkmış. Safari 13 itibari ile .test ile biten alan adı kullandığınızda eğer API bir alt alan adında ise sorun yaşıyorsunuz. Session domain olarak başında nokta ile başlayan, .domain.test gibi bir girdiyi kabul etmiyor. Burada local gibi bir uzantı kullanılması önerilmiş ama şu an Windows makinede olduğum için test edemiyorum. Anladığım kadarıyla bu sorun production ortamda yaşanmıyor, sadece .test alan adı kullanıldığında yani geliştirme sırasında yaşanıyor. Fırsat bulursam test ederim.
Passport konusuna gelince; Passport ile uygulamanızdaki "kullanıcılar" yapısını birbirine karıştıyorsunuz. Uygulamanızdaki kullanıcılar, uygulamanızın birileri tarafından kullanılabilen bir alt yapısı olduğunu ifade ediyor ama nasıl olacağına dair bir yapı içermiyor. Passport ise uygulamanın bir kullanıcı/tüketici tarafından kullanımını mümkün kılan, hali hazırda kullanıcı/tüketici alt yapısı olan bir sisteme sonradan eklenen bir yapı. Passport olmadan da sizin zaten bir kullanıcı/tüketici alt yapısına sahip olmanız gerekiyor. Kullanıcılar bir form aracılığıyla sisteminize kayıt olabiliyorsa Passport olmadan zaten bunu yapabiliyor olmaları lazım. Sonra id gibi bir alan ile kullanıcı ve token ilişkilendiriliyor. Kaldı ki Client Credentials Grant Type kullandığınızda sistemde bir kullanıcı olmasına bile gerek yok, client id ve secret ile de uygulamanız kullanılabilinir. Bu durumda Passport için bir login ya da register scaffold anlamsız oluyor. Siz sadece bir grant_type ile ve her kullanıcının token kullanacağını düşüncesiyle hareket ediyorsunuz...