aghabalaguluzade CSRF koruması sadece web rotalarında (routes/web.php) var, API rotalarında (routes/api.php) yok. GET dışındaki bir web rotasına istek atarken csrf token lazım olduğu için axios'da önce csrf token elde etmeniz gerekiyor. sanctum/csrf-cookie rotası csrf token içeren cookie oluşturur ve axios otomatik olarak diğer isteklerde cookie'den aldığı token'ı X-XSRF-TOKEN adıyla header içinde gönderir. Yani diğer isteklerde tekrar istek atmanıza gerek kalmaz. Login rotası POST olduğu için ve ilk istek atılan CSRF rotası olduğu için sadece login'e istek atarken yapıyorsunuz bu işlemi, gerisini axios hallediyor.
Önemli olan tabi bu değil. Sizin aradığınız cevap; token oluşturmak yerine Auth::attempt() ile kullanıcıyı login yaparsanız session cookie oluşur. Sanctum ile korunan rotalara ise, istek geldiğinde Sanctum önce cookie'ye bakar eğer varsa onu kullanır yoksa Bearer token arar. Bulamazsa ya da hatalı ise 401 verir. Bu durumda siz axios ile Auth::attempt() yapan bir rotaya istek attığınızda aslında token al-sakla-her isteğe ekle işlemini yapmanıza gerek kalmıyor, diğer isteklerde axios token olayını sizin için session cookie kullanarak hallediyor. Tabi bunlar backend ve frontend aynı domain altında ise geçerli.
Sanctum'da refresh token yok ama token'a ömür verebilirsiniz. Ölünce tekrar login isteyecek. Ya da biraz uğraşıp refresh token özelliğini siz yazabilirsiniz. Eğer OAuth protokolüne ihtiyacınız varsa (refresh onda var ama sadece refresh için de Passport kullanılmaz, OAuth ihtiyacınız varsa ne olduğunu biliyorsanız kullanın) Sanctum yerine Passport kullanacaksınız:
https://laravel.com/docs/10.x/passport