Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

mgsmus

coder2

Çok teşekkür ederim elinize emeğinize sağlık <3

mgsmus Peki Laravel+ Vue ile ilerlemek istediğimizde, yani api yazarak vue-router kullanarak, bu durumda en mantıklısı laravel/ui mıdır?

    BoraN7 Laravel + Vue işte, yazmışsınız, başkası yok. Auth için de Sanctum ya da Passport kullanabilirsiniz.

      BoraN7 Vue kullanıyorsanız laravel tarafında ui kullanmanıza gerek kalmaz. Passport işinizi görecektir. Login vs işlemleri için yine fortify ile devam edilebilir.

      mgsmus Şeyi kastetmiştim. Ui başlangıcı hazırlıyor ya app.js yi. Axios, lodash gibi kütüphaneler hazır, csrf ayari var, jquery entegre vs... Bana sadece vue-router kurup npm run watch ile başlamak kalıyor. @coder2

        BoraN7 Vue konusunda henüz öğreniyorum ama mantıken Laravel de api olarak backend i yazmak ve vue kısmını ise bağımsız yazmak daha mantıklı geliyor bana.

          coder2 Bende yeniyim. Su kursu bitirdim https://www.udemy.com/course/master-laravel-6-with-vuejs-fullstack-development/
          ardından bir projede bana avantaj sağlayacağına inanarak başladım.
          Burada egitmen laravel/ui ile başlangıcı hazirladi. Yaptığı çok bir şey degil aslında da ben acemi olduğum için yardımcı oldu paket.
          Mix ile css/js leri compile ederken Vue için bazı temel başlangıç ayarlarını da hazırlıyor.
          Auth içinde eger spa bir web app olacaksa hiç tokenlere bulaşmadan Sanctum entegre edip kullanmayı da öğretiyor kurs sonunda.
          Tabii bu kurs çıktığında Laravel 8 olmadığı için UI kullandı belki de bilemiyorum, bana kolay geldi.

          Selam,
          Ben de konu hakkında araştırıyordum da topiğin güncel olması süper denk geldi, aslında daha ziyade teyit maksatlı 2 sorum olacaktı;

          1. Laravel Sanctum'un Safari browserlarda sorun yarattığıyla ilgili youtube video yorumları dahil birçok forumda şikayetler ( bknz:youtube ) görüyorum, iphone kullanıcılarını hiçe sayamayacağım -yada browser değiştirmelerini isteyemeyeceğim- için hiç denemedim bile ancak konu hakkında bilgisi ve çözüm önerisi olan var mı diye de merak ediyorum? çünkü bir çözüm yolu hala bulamamış olmakla birlikte insanların çok da takmadığı kanaatini edindim, yoğun olarak kullanılıp paylaşılıyor ve ayrıca barındırdığı 2FA doğrulama özelliği de çok şık bir özellik doğrusu.

          2. Passport oauth token'ları üretmek ve kullanmak için hazır route'ları ile gelmekle birlikte authentication için controller ve router'ları bizim hazırlamamız gerekli, değil mi? Geliştiricilerin her paket için kickstarter oluşturup bu kısmını boş bırakmasını biraz yadırgadığım için teyit gereksinimi hissediyorum, atladığım bir şey olabilir mi? Fortify ne yazık ki session based çalışmak üzere hazırlanmış sanıyorum, dökümantasyonda açıkca böyle yazmasa da token temelli kullanımlar için fortify ve sanctum 'un birlikte kullanılması gerektiği iletilmiş, keza şu stackoverflow yorumu da bu kanatimi pekiştirdi ama son bir konusunu görmüşken teyit ihtiyacı hissettim.

          Açıkcası halihazırda passport'u ihtiyaç duyduğu kontrol ve yollarla hazırlayıp hatta bunu paket haline de getirdim, sorunsuz çalışıyorum ancak paketi public yayınlamadan önce atladığım bir şey olmadığından emin olmak istedim 🙂 eğer gerçekten bu kısmı boş ve bize bırakılmışsa küçük bir paket ile o adımı aşabilmemiz için paylaşmak isterim... hatta sanırım paketi oluşturmamı sağlayan elimdeki projeyi bitirince 2FA doğrulamayı da bu pakete ekleyeceğim, ama paylaşmam anlamlı mı saçma mı olur teyit etmek istedim..

          Ve bu vesileyle 2021 için hepinize keyifle kodlayacağınız projeler ve neşe ile geçireceğiniz günler dilerim, umarım gelen gideni aratmaz ve 2021 bize biraz dinlenme fırsatı verir..

          Mutlu yıllar arkadaşlar,

          Saygılar.

            munzevi Merhaba

            1. Bu sıkıntıyı bilmiyorum. localhost kullanınca mı çıkıyor yoksa herhangi bir domain ile de aynı sorun yaşanıyor mu? Normal domain ile yaşanıyorsa mutlaka dokümanlarda Safari ile kullanılamayacağı belirtilirdi. Sorun sadece Safari'de ise bunu ben de önemsemezdim açıkçası. Yıl artık 2008 değil...
            2. Sağlayıcılar farklı bir şekilde tüketiciye token verebilir, bunun bir standardı yok. O yüzden OAuth dışındaki rotaları sizin kendi projenize göre hazırlamanız gerekiyor. Passport'u personal access token ile Sanctum gibi kullanabilirsiniz. Sanctum kullandığınızda tüketici siz oluyorsunuz; Passport kullandığınızda ise tüketici siz de olabilirsiniz 3. parti bir servis de.

              mgsmus hocam selam, sanırım kısıtlı zamanda çok iş yapar bir durumdasınız ya da kendimi ifade edemediğim klasik durumlarımdan birinde olmalıyım 🙂

              1. iletimde de belirttiğim gibi şikayetleri görünce kendim kurup denemedim ama örnek olarak sanctum github reposu, stockoverflow , laracast postlarını paylaşabilirim.. Taylor abimiz de token kullanılmasına kızmış, ancak sorun hakkında bir bildirimde de bulunmadan issue'yı kapamış. %3 kullanım oranı için gayet makul bir tavırdır, saygı duyarım. Ancak proje sahibi o %3 içinde olunca ona da saygı duymak zorundayım 🙂
              2. Passport OAuth üretim/paylaşım için view'ler dahil çeşitli enstrumanlarla geliyor zaten; benim sorduğum register, login vb authentication controllers ve routes "scaffold"u idi; fortify ile passport uyumlu değiller (session ve token based) ve passport kullanılacaksa authentication kısmına hizmet eden, bilmediğim bir çözüm var mı diye öğrenmek istemiştim. buradaki gaye ise hali hazırda kendim için yaptığım yetkilendirme kısmını çözen paketi yayınlamanın yersiz olup olmayacağını anlayabilmekti...

                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...

                  3 yıl sonra

                  mgsmus Hocam selamlar aynı domain altında kullanmak istemiyorum. Api laravel 10 bir rest api olacak ve farklı bir domainde react ile ön yüz kullanacağım. Benim için en iyi seçenek fortify mıdır?

                    eyupfidan Hayır. Siz Sanctum kullanacaksınız ve Sanctum'ın API token özelliği ile yapacaksınız:
                    https://laravel.com/docs/10.x/sanctum#api-token-authentication

                    API'da bir endpointe, /login mesela, FE tarafından kullanıcı adı ve şifre ile istek atacaksınız, karşılığında API token verecek. Sonra FE tarafında bu token'ı saklayıp auth isteyen endpointlere bu token'ı Bearer token olarak kullanarak istek atacaksınız.

                    Sanctum dokümanlarını komple okumanızı tavsiye ederim:
                    https://laravel.com/docs/10.x/sanctum