{"id":34942,"date":"2025-11-23T23:40:54","date_gmt":"2025-11-23T20:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34942"},"modified":"2025-11-23T23:40:54","modified_gmt":"2025-11-23T20:40:54","slug":"laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/","title":{"rendered":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri"},"content":{"rendered":"<p><body><\/p>\n<h2>Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Laravel, PHP tabanl\u0131 web uygulamalar\u0131 geli\u015ftirmek i\u00e7in en pop\u00fcler ve g\u00fc\u00e7l\u00fc frameworklerden biridir. Geli\u015ftiricilere h\u0131zl\u0131, \u00f6l\u00e7eklenebilir ve bak\u0131m\u0131 kolay uygulamalar olu\u015fturma imkan\u0131 sunar. Ancak her web uygulamas\u0131n\u0131n temelinde yer alan kullan\u0131c\u0131 kimlik do\u011frulama (authentication) ve yetkilendirme (authorization) s\u00fcre\u00e7leri, geli\u015ftirme s\u00fcrecinin \u00f6nemli bir k\u0131sm\u0131n\u0131 olu\u015fturur. Bu s\u00fcre\u00e7ler, kay\u0131t, giri\u015f, \u015fifre s\u0131f\u0131rlama, e-posta do\u011frulama gibi bir\u00e7ok karma\u015f\u0131k ad\u0131m\u0131 i\u00e7erir ve genellikle g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 son derece hassas olmak zorundad\u0131r. \u0130\u015fte tam bu noktada Laravel Jetstream devreye girerek, geli\u015ftiricilere modern ve g\u00fcvenli bir kimlik do\u011frulama iskeleti sunar.<\/p>\n<p>Jetstream, Laravel uygulamalar\u0131n\u0131za sadece birka\u00e7 komutla entegre edebilece\u011finiz, kapsaml\u0131 bir kimlik do\u011frulama, profil y\u00f6netimi, iki fakt\u00f6rl\u00fc kimlik do\u011frulama (2FA) ve API token y\u00f6netimi \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Bu makalede, Laravel Jetstream&#8217;in ne oldu\u011funu, neden kullanman\u0131z gerekti\u011fini, nas\u0131l kurulup yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131, sundu\u011fu temel \u00f6zellikleri ve bu \u00f6zellikleri nas\u0131l \u00f6zelle\u015ftirebilece\u011finizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Amac\u0131m\u0131z, Jetstream&#8217;i kullanarak uygulamalar\u0131n\u0131zda g\u00fc\u00e7l\u00fc bir kimlik do\u011frulama sistemi kurman\u0131z i\u00e7in size kapsaml\u0131 bir rehber sunmakt\u0131r.<\/p>\n<h3>Laravel Jetstream Nedir?<\/h3>\n<p>Laravel Jetstream, Taylor Otwell taraf\u0131ndan geli\u015ftirilen ve Laravel ekosisteminin bir par\u00e7as\u0131 olan resmi bir &#8220;scaffolding&#8221; (iskelet) paketidir. Temel olarak, Laravel uygulamalar\u0131na modern bir kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi aray\u00fcz\u00fc ve arka u\u00e7 mant\u0131\u011f\u0131 eklemek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Jetstream, iki ana teknoloji y\u0131\u011f\u0131n\u0131 \u00fczerine kuruludur:<\/p>\n<p>1.  <strong>Laravel Fortify:<\/strong> Bu, kimlik do\u011frulama i\u015flemlerinin (kay\u0131t, giri\u015f, \u015fifre s\u0131f\u0131rlama, e-posta do\u011frulama, iki fakt\u00f6rl\u00fc kimlik do\u011frulama vb.) arka u\u00e7 mant\u0131\u011f\u0131n\u0131 ve eylemlerini (actions) sa\u011flayan, ba\u015fs\u0131z (headless) bir kimlik do\u011frulama k\u00fct\u00fcphanesidir. Fortify, herhangi bir kullan\u0131c\u0131 aray\u00fcz\u00fc sa\u011flamaz, sadece kimlik do\u011frulama ak\u0131\u015f\u0131n\u0131n temelini olu\u015fturur.<br \/>\n2.  <strong>Kullan\u0131c\u0131 Aray\u00fcz\u00fc (UI) Katman\u0131:<\/strong> Jetstream, Fortify&#8217;nin sa\u011flad\u0131\u011f\u0131 arka u\u00e7 mant\u0131\u011f\u0131n\u0131 kullanarak modern ve etkile\u015fimli bir kullan\u0131c\u0131 aray\u00fcz\u00fc sunar. Bu UI katman\u0131 i\u00e7in iki farkl\u0131 teknoloji y\u0131\u011f\u0131n\u0131 se\u00e7ene\u011fi sunar:<br \/>\n    *   <strong>Livewire + Blade:<\/strong> Laravel&#8217;in kendi ekosisteminde derinlemesine entegre olan, sunucu taraf\u0131nda render edilen dinamik aray\u00fczler olu\u015fturmak i\u00e7in kullan\u0131lan bir y\u0131\u011f\u0131nd\u0131r. PHP geli\u015ftiricileri i\u00e7in daha tan\u0131d\u0131k ve h\u0131zl\u0131 bir geli\u015ftirme deneyimi sunar.<br \/>\n    *   <strong>Inertia.js + Vue.js (veya React\/Svelte):<\/strong> Tek sayfal\u0131k uygulama (SPA) benzeri bir deneyim sunan bir y\u0131\u011f\u0131nd\u0131r. Inertia.js, sunucu taraf\u0131 y\u00f6nlendirmelerini (routing) korurken, istemci taraf\u0131nda Vue.js (varsay\u0131lan), React veya Svelte gibi modern JavaScript framework&#8217;lerini kullanman\u0131za olanak tan\u0131r. Bu se\u00e7enek, daha zengin ve etkile\u015fimli istemci taraf\u0131 deneyimleri arayanlar i\u00e7in idealdir.<\/p>\n<p>Jetstream&#8217;in sundu\u011fu temel \u00f6zellikler \u015funlard\u0131r:<\/p>\n<p>*   <strong>Kay\u0131t ve Giri\u015f:<\/strong> Kullan\u0131c\u0131lar\u0131n kolayca hesap olu\u015fturmas\u0131n\u0131 ve oturum a\u00e7mas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>\u015eifre S\u0131f\u0131rlama:<\/strong> Unutulan \u015fifreler i\u00e7in g\u00fcvenli s\u0131f\u0131rlama mekanizmas\u0131.<br \/>\n*   <strong>E-posta Do\u011frulama:<\/strong> Yeni kay\u0131t olan kullan\u0131c\u0131lar\u0131n e-posta adreslerini do\u011frulamas\u0131.<br \/>\n*   <strong>Profil Y\u00f6netimi:<\/strong> Kullan\u0131c\u0131lar\u0131n ad, e-posta, \u015fifre ve profil foto\u011fraf\u0131 gibi bilgilerini g\u00fcncellemeleri.<br \/>\n*   <strong>\u0130ki Fakt\u00f6rl\u00fc Kimlik Do\u011frulama (2FA):<\/strong> Uygulaman\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in ek bir g\u00fcvenlik katman\u0131.<br \/>\n*   <strong>API Token Y\u00f6netimi:<\/strong> Laravel Sanctum ile entegre olarak, SPA&#8217;lar ve mobil uygulamalar i\u00e7in API token&#8217;lar\u0131 olu\u015fturma ve y\u00f6netme yetene\u011fi.<br \/>\n*   <strong>Taray\u0131c\u0131 Oturum Y\u00f6netimi:<\/strong> Kullan\u0131c\u0131lar\u0131n hangi cihazlarda oturum a\u00e7t\u0131\u011f\u0131n\u0131 g\u00f6rmesi ve istenmeyen oturumlar\u0131 kapatmas\u0131.<br \/>\n*   <strong>Tak\u0131m Y\u00f6netimi (Opsiyonel):<\/strong> <code>--teams<\/code> bayra\u011f\u0131 ile kuruldu\u011funda, kullan\u0131c\u0131lar\u0131n tak\u0131mlar olu\u015fturmas\u0131na, di\u011fer \u00fcyeleri davet etmesine ve rol atamas\u0131na olanak tan\u0131yan bir \u00f6zellik.<\/p>\n<p>Bu \u00f6zellikler, modern bir web uygulamas\u0131n\u0131n ihtiya\u00e7 duydu\u011fu temel kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi gereksinimlerini kutudan \u00e7\u0131kar \u00e7\u0131kmaz kar\u015f\u0131lar, geli\u015ftiricilerin bu karma\u015f\u0131k s\u00fcre\u00e7leri ba\u015ftan yazmak yerine do\u011frudan i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r.<\/p>\n<h3>Neden Laravel Jetstream Kullanmal\u0131s\u0131n\u0131z?<\/h3>\n<p>Laravel Jetstream&#8217;i projenize dahil etmek, geli\u015ftirme s\u00fcrecinizde size bir dizi \u00f6nemli avantaj sunar:<\/p>\n<p>*   <strong>H\u0131zl\u0131 Geli\u015ftirme ve Zaman Tasarrufu:<\/strong> Kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi, her uygulaman\u0131n olmazsa olmaz\u0131d\u0131r ve genellikle tekrar eden, zaman al\u0131c\u0131 bir s\u00fcre\u00e7tir. Jetstream, bu temel i\u015flevleri \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f ve test edilmi\u015f bir \u015fekilde sunarak, geli\u015ftiricilerin haftalarca s\u00fcrebilecek bu s\u00fcreci dakikalara indirmesini sa\u011flar. Bu, projenizin \u00e7ekirdek \u00f6zelliklerine daha fazla odaklanman\u0131za olanak tan\u0131r.<br \/>\n*   <strong>Kapsaml\u0131 ve Modern \u00d6zellikler:<\/strong> Jetstream, g\u00fcn\u00fcm\u00fcz modern web uygulamalar\u0131n\u0131n bekledi\u011fi t\u00fcm temel kimlik do\u011frulama \u00f6zelliklerini (kay\u0131t, giri\u015f, \u015fifre s\u0131f\u0131rlama, e-posta do\u011frulama) ve ek g\u00fcvenlik katmanlar\u0131n\u0131 (iki fakt\u00f6rl\u00fc kimlik do\u011frulama, taray\u0131c\u0131 oturum y\u00f6netimi, API token y\u00f6netimi) standart olarak sunar. Bu, uygulaman\u0131z\u0131n ba\u015ftan itibaren g\u00fcvenli ve zengin \u00f6zelliklere sahip olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Kimlik do\u011frulama, uygulaman\u0131n en kritik g\u00fcvenlik alanlar\u0131ndan biridir. Jetstream, Laravel Fortify&#8217;nin sa\u011flam g\u00fcvenlik temelleri \u00fczerine in\u015fa edilmi\u015ftir ve Laravel toplulu\u011fu taraf\u0131ndan s\u00fcrekli olarak denetlenir ve g\u00fcncellenir. Bu, yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 korunmu\u015f, g\u00fcvenilir bir \u00e7\u00f6z\u00fcm kulland\u0131\u011f\u0131n\u0131z anlam\u0131na gelir.<br \/>\n*   <strong>Esneklik ve Teknoloji Se\u00e7imi:<\/strong> Jetstream, kullan\u0131c\u0131 aray\u00fcz\u00fc i\u00e7in Livewire + Blade veya Inertia.js + Vue.js olmak \u00fczere iki farkl\u0131 teknoloji y\u0131\u011f\u0131n\u0131 se\u00e7ene\u011fi sunar. Bu esneklik, projenizin gereksinimlerine ve ekibinizin yetkinliklerine en uygun teknoloji y\u0131\u011f\u0131n\u0131n\u0131 se\u00e7menize olanak tan\u0131r. \u0130ster geleneksel sunucu tarafl\u0131 renderlama, ister modern SPA benzeri bir deneyim isteyin, Jetstream size uygun bir \u00e7\u00f6z\u00fcm sunar.<br \/>\n*   <strong>API Deste\u011fi:<\/strong> Laravel Sanctum ile derinlemesine entegrasyon sayesinde Jetstream, SPA&#8217;lar, mobil uygulamalar veya di\u011fer API t\u00fcketicileri i\u00e7in g\u00fcvenli API token y\u00f6netimi sa\u011flar. Bu, modern, \u00e7ok katmanl\u0131 uygulamalar geli\u015ftirirken b\u00fcy\u00fck bir kolayl\u0131k sa\u011flar.<br \/>\n*   <strong>Kolay Bak\u0131m ve G\u00fcncelleme:<\/strong> Jetstream, Laravel&#8217;in kendi geli\u015ftirme ekibi taraf\u0131ndan desteklenir ve g\u00fcncellenir. Bu, Laravel&#8217;in yeni s\u00fcr\u00fcmleriyle uyumlulu\u011fun korunaca\u011f\u0131 ve herhangi bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 veya hata durumunda h\u0131zl\u0131ca yamalar\u0131n sa\u011flanaca\u011f\u0131 anlam\u0131na gelir. Ayr\u0131ca, iyi yap\u0131land\u0131r\u0131lm\u0131\u015f ve mod\u00fcler yap\u0131s\u0131 sayesinde, mevcut \u00f6zellikleri \u00f6zelle\u015ftirmek veya geni\u015fletmek de nispeten kolayd\u0131r.<br \/>\n*   <strong>Topluluk Deste\u011fi:<\/strong> Laravel&#8217;in geni\u015f ve aktif bir toplulu\u011fu vard\u0131r. Jetstream ile ilgili herhangi bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda veya bir \u00f6zelli\u011fin nas\u0131l uygulanaca\u011f\u0131n\u0131 merak etti\u011finizde, \u00e7evrimi\u00e7i forumlarda, dok\u00fcmantasyonda ve di\u011fer kaynaklarda kolayca yard\u0131m bulabilirsiniz.<\/p>\n<p>\u00d6zetle, Laravel Jetstream, geli\u015ftiricilerin kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi s\u00fcre\u00e7lerini h\u0131zl\u0131, g\u00fcvenli ve esnek bir \u015fekilde uygulamalar\u0131na olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bu, projenizin kalitesini art\u0131r\u0131rken geli\u015ftirme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<h3>Kurulum \u00d6ncesi Haz\u0131rl\u0131klar<\/h3>\n<p>Laravel Jetstream&#8217;i projenize entegre etmeden \u00f6nce, sisteminizde belirli yaz\u0131l\u0131mlar\u0131n kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f oldu\u011fundan emin olman\u0131z gerekir. Bu \u00f6n ko\u015fullar, Laravel ve Jetstream&#8217;in sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereklidir.<\/p>\n<p>1.  <strong>PHP:<\/strong> Laravel Jetstream, PHP 8.1 veya daha yeni bir s\u00fcr\u00fcm\u00fcn\u00fc gerektirir. PHP&#8217;nin do\u011fru bir \u015fekilde kuruldu\u011fundan ve gerekli uzant\u0131lar\u0131n (\u00f6rne\u011fin, <code>mbstring<\/code>, <code>pdo<\/code>, <code>xml<\/code>, <code>bcmath<\/code>, <code>ctype<\/code>, <code>json<\/code>, <code>tokenizer<\/code>) etkinle\u015ftirildi\u011finden emin olun. PHP&#8217;nin s\u00fcr\u00fcm\u00fcn\u00fc kontrol etmek i\u00e7in terminalinizde <code>php -v<\/code> komutunu kullanabilirsiniz.<br \/>\n2.  <strong>Composer:<\/strong> PHP ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisi Composer, Laravel ve Jetstream paketlerini projenize y\u00fcklemek i\u00e7in olmazsa olmazd\u0131r. Composer&#8217;\u0131n kurulu olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>composer -V<\/code> komutunu kullanabilirsiniz. Kurulu de\u011filse, resmi Composer web sitesinden (getcomposer.org) kurulum talimatlar\u0131n\u0131 takip edebilirsiniz.<br \/>\n3.  <strong>Node.js ve npm\/Yarn:<\/strong> Jetstream&#8217;in kullan\u0131c\u0131 aray\u00fcz\u00fc katman\u0131 (Livewire\/Inertia.js), modern JavaScript ara\u00e7lar\u0131n\u0131 (derleme, paketleme vb.) kullan\u0131r. Bu nedenle Node.js ve bir paket y\u00f6neticisi (npm veya Yarn) sisteminizde kurulu olmal\u0131d\u0131r. Node.js&#8217;nin s\u00fcr\u00fcm\u00fcn\u00fc <code>node -v<\/code> ve npm&#8217;nin s\u00fcr\u00fcm\u00fcn\u00fc <code>npm -v<\/code> komutlar\u0131yla kontrol edebilirsiniz. Kurulu de\u011filse, Node.js&#8217;nin resmi web sitesinden (nodejs.org) indirip kurabilirsiniz.<br \/>\n4.  <strong>Veritaban\u0131:<\/strong> Laravel projeniz i\u00e7in bir veritaban\u0131 sunucusu (MySQL, PostgreSQL, SQLite vb.) kurulu ve eri\u015filebilir olmal\u0131d\u0131r. Jetstream, kullan\u0131c\u0131 ve oturum bilgilerini saklamak i\u00e7in veritaban\u0131n\u0131 kullan\u0131r.<br \/>\n5.  <strong>Laravel Projesi:<\/strong> Jetstream&#8217;i mevcut bir Laravel projesine kurabilir veya yeni bir Laravel projesi olu\u015fturup ard\u0131ndan Jetstream&#8217;i entegre edebilirsiniz. Bu makale, yeni bir Laravel projesi olu\u015fturarak Jetstream kurulumunu g\u00f6sterecektir.<\/p>\n<p>Bu \u00f6n ko\u015fullar\u0131 sa\u011flad\u0131ktan sonra, Laravel Jetstream&#8217;i projenize dahil etmeye haz\u0131rs\u0131n\u0131z demektir.<\/p>\n<h3>Laravel Jetstream Kurulumu<\/h3>\n<p>Laravel Jetstream&#8217;i projenize entegre etmek olduk\u00e7a basit bir s\u00fcre\u00e7tir ve birka\u00e7 ad\u0131mdan olu\u015fur. \u0130\u015fte ad\u0131m ad\u0131m kurulum rehberi:<\/p>\n<h4>Yeni Bir Laravel Projesi Olu\u015fturma<\/h4>\n<p>E\u011fer mevcut bir Laravel projeniz varsa bu ad\u0131m\u0131 atlayabilirsiniz. Yeni bir proje olu\u015fturmak i\u00e7in Composer&#8217;\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel jetstream-app\ncd jetstream-app<\/code><\/pre>\n<p>Bu komut, <code>jetstream-app<\/code> ad\u0131nda yeni bir Laravel projesi olu\u015fturacak ve projenin dizinine ge\u00e7i\u015f yapacakt\u0131r.<\/p>\n<h4>Veritaban\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Projenizin <code>.env<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve veritaban\u0131 ba\u011flant\u0131 bilgilerinizi g\u00fcncelleyin. \u00d6rne\u011fin, MySQL kullan\u0131yorsan\u0131z:<\/p>\n<pre><code class=\"language-ini\">DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=jetstream_db\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre>\n<p><code>jetstream_db<\/code> ad\u0131nda bir veritaban\u0131n\u0131n sunucunuzda mevcut oldu\u011fundan emin olun.<\/p>\n<h4>Jetstream&#8217;i Y\u00fckleme<\/h4>\n<p>Composer kullanarak Jetstream paketini projenize ekleyin:<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/jetstream<\/code><\/pre>\n<p>Bu komut, Jetstream&#8217;in t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 projenize indirecektir.<\/p>\n<h4>Stack Se\u00e7imi ve Kurulumu<\/h4>\n<p>Jetstream&#8217;i y\u00fckledikten sonra, kullanmak istedi\u011finiz UI y\u0131\u011f\u0131n\u0131n\u0131 (Livewire veya Inertia.js) se\u00e7erek kurulumu tamamlaman\u0131z gerekir. Ayr\u0131ca, tak\u0131m y\u00f6netimi \u00f6zelli\u011fini de bu ad\u0131mda etkinle\u015ftirebilirsiniz.<\/p>\n<h5>Livewire + Blade ile Kurulum<\/h5>\n<p>Livewire ve Blade y\u0131\u011f\u0131n\u0131n\u0131 kullanmak istiyorsan\u0131z, a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">php artisan jetstream:install livewire<\/code><\/pre>\n<p>E\u011fer tak\u0131m y\u00f6netimini de dahil etmek isterseniz:<\/p>\n<pre><code class=\"language-bash\">php artisan jetstream:install livewire --teams<\/code><\/pre>\n<p>Bu komut, gerekli Livewire bile\u015fenlerini, Blade \u015fablonlar\u0131n\u0131 ve di\u011fer yap\u0131land\u0131rma dosyalar\u0131n\u0131 projenize ekler.<\/p>\n<h5>Inertia.js + Vue.js ile Kurulum<\/h5>\n<p>Inertia.js ve Vue.js y\u0131\u011f\u0131n\u0131n\u0131 kullanmak istiyorsan\u0131z, a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">php artisan jetstream:install inertia<\/code><\/pre>\n<p>E\u011fer tak\u0131m y\u00f6netimini de dahil etmek isterseniz:<\/p>\n<pre><code class=\"language-bash\">php artisan jetstream:install inertia --teams<\/code><\/pre>\n<p>Bu komut, Inertia.js ve Vue.js ile ilgili dosyalar\u0131, JavaScript ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve di\u011fer yap\u0131land\u0131rmalar\u0131 projenize ekler.<\/p>\n<p><strong>Not:<\/strong> React veya Svelte gibi di\u011fer Inertia.js istemci adapt\u00f6rlerini kullanmak isterseniz, Jetstream kurulumundan sonra ilgili adapt\u00f6r\u00fc manuel olarak kurman\u0131z ve <code>app.js<\/code> dosyas\u0131n\u0131 d\u00fczenlemeniz gerekecektir.<\/p>\n<h4>JavaScript Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 Y\u00fckleme ve Derleme<\/h4>\n<p>Se\u00e7ti\u011finiz y\u0131\u011f\u0131n\u0131n kurulum komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, frontend ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fcklemeniz ve derlemeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">npm install\nnpm run dev<\/code><\/pre>\n<p>*   <code>npm install<\/code>: <code>package.json<\/code> dosyas\u0131nda belirtilen t\u00fcm JavaScript ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 indirir.<br \/>\n*   <code>npm run dev<\/code>: Geli\u015ftirme ortam\u0131 i\u00e7in JavaScript ve CSS dosyalar\u0131n\u0131 derler. \u00dcretim i\u00e7in <code>npm run build<\/code> komutunu kullanabilirsiniz.<\/p>\n<h4>Veritaban\u0131 G\u00f6\u00e7lerini \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Jetstream, kullan\u0131c\u0131lar, ki\u015fisel eri\u015fim jetonlar\u0131 (API tokenlar\u0131) ve oturumlar i\u00e7in ek veritaban\u0131 tablolar\u0131 gerektirir. Bu tablolar\u0131 olu\u015fturmak i\u00e7in veritaban\u0131 g\u00f6\u00e7lerini \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Bu komut, Laravel projenizdeki t\u00fcm bekleyen g\u00f6\u00e7leri (migrations) \u00e7al\u0131\u015ft\u0131rarak gerekli tablolar\u0131 veritaban\u0131n\u0131zda olu\u015fturacakt\u0131r.<\/p>\n<p>T\u00fcm bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, Laravel uygulaman\u0131z Jetstream ile tam entegre hale gelmi\u015f olacakt\u0131r. Uygulaman\u0131z\u0131 bir taray\u0131c\u0131da a\u00e7t\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin, <code>php artisan serve<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak), sa\u011f \u00fcst k\u00f6\u015fede &#8220;Login&#8221; (Giri\u015f) ve &#8220;Register&#8221; (Kay\u0131t Ol) ba\u011flant\u0131lar\u0131n\u0131 g\u00f6rmelisiniz. Art\u0131k kullan\u0131c\u0131 kayd\u0131, giri\u015fi ve di\u011fer Jetstream \u00f6zelliklerini kullanmaya ba\u015flayabilirsiniz.<\/p>\n<h3>Jetstream \u00d6zelliklerine Derinlemesine Bak\u0131\u015f<\/h3>\n<p>Laravel Jetstream, modern web uygulamalar\u0131n\u0131n ihtiya\u00e7 duydu\u011fu kapsaml\u0131 bir dizi kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi \u00f6zelli\u011fi sunar. Bu b\u00f6l\u00fcmde, Jetstream&#8217;in temel \u00f6zelliklerini daha yak\u0131ndan inceleyece\u011fiz.<\/p>\n<h4>Kimlik Do\u011frulama Ak\u0131\u015f\u0131<\/h4>\n<p>Jetstream, Laravel Fortify sayesinde sa\u011flam bir kimlik do\u011frulama ak\u0131\u015f\u0131 sunar:<\/p>\n<p>*   <strong>Kay\u0131t (Registration):<\/strong> Yeni kullan\u0131c\u0131lar\u0131n e-posta, \u015fifre ve iste\u011fe ba\u011fl\u0131 olarak isim gibi bilgilerle hesap olu\u015fturmas\u0131n\u0131 sa\u011flar. Arka planda <code>App\\Actions\\Fortify\\CreateNewUser<\/code> action&#8217;\u0131 \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Giri\u015f (Login):<\/strong> Mevcut kullan\u0131c\u0131lar\u0131n e-posta ve \u015fifreleriyle oturum a\u00e7mas\u0131n\u0131 sa\u011flar. <code>App\\Actions\\Fortify\\AttemptToAuthenticate<\/code> action&#8217;\u0131 bu s\u00fcreci y\u00f6netir.<br \/>\n*   <strong>\u015eifre S\u0131f\u0131rlama (Password Reset):<\/strong> Kullan\u0131c\u0131lar\u0131n unutulan \u015fifrelerini e-posta arac\u0131l\u0131\u011f\u0131yla g\u00fcvenli bir \u015fekilde s\u0131f\u0131rlamas\u0131na olanak tan\u0131r. <code>App\\Actions\\Fortify\\ResetUserPassword<\/code> action&#8217;\u0131 bu i\u015flemi ger\u00e7ekle\u015ftirir.<br \/>\n*   <strong>E-posta Do\u011frulama (Email Verification):<\/strong> Yeni kay\u0131t olan kullan\u0131c\u0131lar\u0131n e-posta adreslerini do\u011frulamalar\u0131n\u0131 gerektirir. Bu, uygulaman\u0131n g\u00fcvenli\u011fini art\u0131r\u0131r ve spam hesaplar\u0131 azalt\u0131r.<\/p>\n<p>T\u00fcm bu ak\u0131\u015flar, \u00f6nceden tan\u0131mlanm\u0131\u015f view&#8217;lar (Blade veya Vue\/React bile\u015fenleri) ve Fortify taraf\u0131ndan sa\u011flanan arka u\u00e7 mant\u0131\u011f\u0131 ile sorunsuz bir \u015fekilde \u00e7al\u0131\u015f\u0131r.<\/p>\n<h4>Profil Y\u00f6netimi<\/h4>\n<p>Kullan\u0131c\u0131lar oturum a\u00e7t\u0131ktan sonra, profil bilgilerini y\u00f6netebilirler:<\/p>\n<p>*   <strong>Kullan\u0131c\u0131 Bilgilerini G\u00fcncelleme:<\/strong> Ad, e-posta adresi gibi temel profil bilgilerini de\u011fi\u015ftirebilirler. Bu i\u015flem genellikle <code>App\\Actions\\Jetstream\\UpdateUserProfileInformation<\/code> action&#8217;\u0131 taraf\u0131ndan ele al\u0131n\u0131r.<br \/>\n*   <strong>\u015eifre G\u00fcncelleme:<\/strong> Mevcut \u015fifrelerini g\u00fcvenli bir \u015fekilde yeni bir \u015fifreyle de\u011fi\u015ftirebilirler. <code>App\\Actions\\Fortify\\UpdateUserPassword<\/code> action&#8217;\u0131 kullan\u0131l\u0131r.<br \/>\n*   <strong>Profil Foto\u011fraf\u0131 (Avatar) Y\u00f6netimi:<\/strong> Kullan\u0131c\u0131lar\u0131n profil foto\u011fraflar\u0131n\u0131 y\u00fcklemesine, g\u00fcncellemesine ve silmesine olanak tan\u0131r. Bu \u00f6zellik, Livewire veya Inertia.js bile\u015fenleri arac\u0131l\u0131\u011f\u0131yla sa\u011flan\u0131r ve dosya y\u00fckleme mant\u0131\u011f\u0131 <code>App\\Actions\\Jetstream\\UpdateUserProfileInformation<\/code> action&#8217;\u0131nda bulunur.<\/p>\n<h4>\u0130ki Fakt\u00f6rl\u00fc Kimlik Do\u011frulama (2FA)<\/h4>\n<p>Jetstream, uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in iki fakt\u00f6rl\u00fc kimlik do\u011frulama \u00f6zelli\u011fini entegre eder. Kullan\u0131c\u0131lar, bu \u00f6zelli\u011fi etkinle\u015ftirerek \u015fifrelerinin yan\u0131 s\u0131ra bir do\u011frulama kodu (genellikle Google Authenticator gibi bir uygulama arac\u0131l\u0131\u011f\u0131yla) girmeleri gerekir.<\/p>\n<p>*   <strong>Etkinle\u015ftirme:<\/strong> Kullan\u0131c\u0131lar, profillerindeki bir se\u00e7enek arac\u0131l\u0131\u011f\u0131yla 2FA&#8217;y\u0131 etkinle\u015ftirebilirler. Bu, bir QR kodu ve kurtarma kodlar\u0131 \u00fcretir.<br \/>\n*   <strong>Kurtarma Kodlar\u0131:<\/strong> 2FA cihazlar\u0131na eri\u015fimlerini kaybetmeleri durumunda kullan\u0131c\u0131lar\u0131n oturum a\u00e7malar\u0131n\u0131 sa\u011flayan tek kullan\u0131ml\u0131k kodlard\u0131r.<br \/>\n*   <strong>Google Authenticator Entegrasyonu:<\/strong> Jetstream, TOTP (Time-based One-Time Password) algoritmalar\u0131n\u0131 destekleyerek Google Authenticator gibi uygulamalarla kolayca entegre olur.<\/p>\n<h4>Taray\u0131c\u0131 Oturum Y\u00f6netimi<\/h4>\n<p>Bu \u00f6zellik, kullan\u0131c\u0131lar\u0131n hesaplar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamalar\u0131na yard\u0131mc\u0131 olur. Kullan\u0131c\u0131lar, profillerindeki bir panelden, hesaplar\u0131n\u0131n hangi cihazlarda ve taray\u0131c\u0131larda etkin oturumlar\u0131 oldu\u011funu g\u00f6rebilir ve istenmeyen oturumlar\u0131 uzaktan kapatabilirler. Bu, \u00f6zellikle halka a\u00e7\u0131k bilgisayarlarda oturum a\u00e7m\u0131\u015f ve \u00e7\u0131k\u0131\u015f yapmay\u0131 unutmu\u015f kullan\u0131c\u0131lar i\u00e7in faydal\u0131d\u0131r. Arka planda <code>App\\Actions\\Jetstream\\LogoutOtherBrowserSessions<\/code> action&#8217;\u0131 bu i\u015flemi y\u00f6netir.<\/p>\n<h4>API Token Y\u00f6netimi (Laravel Sanctum ile)<\/h4>\n<p>Jetstream, Laravel Sanctum ile derinlemesine entegrasyon sayesinde API token y\u00f6netimini kutudan \u00e7\u0131kar \u00e7\u0131kmaz sunar. Bu \u00f6zellik, \u00f6zellikle tek sayfal\u0131k uygulamalar (SPA&#8217;lar), mobil uygulamalar veya di\u011fer API t\u00fcketicileri i\u00e7in \u00f6nemlidir.<\/p>\n<p>*   <strong>Token Olu\u015fturma:<\/strong> Kullan\u0131c\u0131lar, profillerindeki bir aray\u00fcz arac\u0131l\u0131\u011f\u0131yla yeni API token&#8217;lar\u0131 olu\u015fturabilirler.<br \/>\n*   <strong>\u0130zinler (Scopes):<\/strong> Token&#8217;lara belirli izinler (\u00f6rne\u011fin, <code>read<\/code>, <code>create<\/code>, <code>update<\/code>, <code>delete<\/code>) atayabilirler. Bu, API token&#8217;lar\u0131n\u0131n belirli i\u015flevlerle s\u0131n\u0131rl\u0131 olmas\u0131n\u0131 sa\u011flar ve g\u00fcvenlik riskini azalt\u0131r.<br \/>\n*   <strong>Token Silme:<\/strong> Olu\u015fturulan token&#8217;lar\u0131 gerekti\u011finde silebilirler.<\/p>\n<p>Bu \u00f6zellik, uygulaman\u0131z\u0131n API&#8217;lerini g\u00fcvenli bir \u015fekilde t\u00fcketmek isteyen di\u011fer hizmetler veya uygulamalar i\u00e7in g\u00fc\u00e7l\u00fc bir mekanizma sunar.<\/p>\n<h4>Tak\u0131m Y\u00f6netimi (Opsiyonel)<\/h4>\n<p>E\u011fer Jetstream&#8217;i <code>--teams<\/code> bayra\u011f\u0131 ile kurduysan\u0131z, uygulaman\u0131z \u00e7oklu tak\u0131m deste\u011fi ile birlikte gelir. Bu \u00f6zellik, SaaS (Software as a Service) uygulamalar\u0131 veya birden fazla kullan\u0131c\u0131n\u0131n i\u015fbirli\u011fi yapmas\u0131 gereken uygulamalar i\u00e7in idealdir.<\/p>\n<p>*   <strong>Tak\u0131m Olu\u015fturma:<\/strong> Kullan\u0131c\u0131lar kendi tak\u0131mlar\u0131n\u0131 olu\u015fturabilirler.<br \/>\n*   <strong>\u00dcye Davet Etme:<\/strong> Tak\u0131m sahipleri, di\u011fer kullan\u0131c\u0131lar\u0131 tak\u0131mlar\u0131na davet edebilir. Davet edilen kullan\u0131c\u0131lar, e-posta arac\u0131l\u0131\u011f\u0131yla daveti kabul edebilirler.<br \/>\n*   <strong>Rol Atama:<\/strong> Tak\u0131m \u00fcyelerine farkl\u0131 roller (\u00f6rne\u011fin, &#8220;owner&#8221;, &#8220;member&#8221;) atanabilir. Bu roller, yetkilendirme (authorization) s\u00fcre\u00e7lerinde kullan\u0131labilir.<br \/>\n*   <strong>Tak\u0131m De\u011fi\u015ftirme:<\/strong> Kullan\u0131c\u0131lar, birden fazla tak\u0131m\u0131n \u00fcyesi iseler, aktif tak\u0131mlar\u0131n\u0131 de\u011fi\u015ftirebilirler.<\/p>\n<p>Tak\u0131m y\u00f6netimi, <code>App\\Actions\\Jetstream<\/code> dizini alt\u0131ndaki <code>CreateTeam<\/code>, <code>AddTeamMember<\/code>, <code>UpdateTeamName<\/code>, <code>UpdateTeamMemberRole<\/code>, <code>RemoveTeamMember<\/code> ve <code>DeleteTeam<\/code> gibi action&#8217;lar taraf\u0131ndan y\u00f6netilir. Bu action&#8217;lar, tak\u0131m ile ilgili i\u015f mant\u0131\u011f\u0131n\u0131 i\u00e7erir ve \u00f6zelle\u015ftirilebilir.<\/p>\n<p>Jetstream&#8217;in bu \u00f6zellikleri, geli\u015ftiricilere karma\u015f\u0131k kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi i\u015flevlerini h\u0131zl\u0131 ve g\u00fcvenli bir \u015fekilde entegre etme olana\u011f\u0131 tan\u0131r. Her bir \u00f6zellik, modern uygulamalar\u0131n gereksinimlerini kar\u015f\u0131layacak \u015fekilde tasarlanm\u0131\u015ft\u0131r ve Laravel&#8217;in g\u00fcc\u00fcnden tam olarak yararlan\u0131r.<\/p>\n<h3>Jetstream&#8217;i \u00d6zelle\u015ftirme<\/h3>\n<p>Laravel Jetstream, kutudan \u00e7\u0131kar \u00e7\u0131kmaz kapsaml\u0131 \u00f6zellikler sunsa da, her uygulaman\u0131n kendine \u00f6zg\u00fc gereksinimleri olabilir. Jetstream&#8217;in mod\u00fcler yap\u0131s\u0131 sayesinde, varsay\u0131lan davran\u0131\u015flar\u0131 ve g\u00f6r\u00fcn\u00fcmleri kolayca \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<h4>View&#8217;lar\u0131 Yay\u0131mlama ve De\u011fi\u015ftirme<\/h4>\n<p>Jetstream&#8217;in kullan\u0131c\u0131 aray\u00fcz\u00fc, Livewire + Blade veya Inertia.js + Vue\/React kullan\u0131larak olu\u015fturulur. Bu g\u00f6r\u00fcn\u00fcmleri do\u011frudan de\u011fi\u015ftirmek i\u00e7in, Jetstream&#8217;in view dosyalar\u0131n\u0131 projenize yay\u0131mlaman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --tag=jetstream-views<\/code><\/pre>\n<p>Bu komut, Jetstream&#8217;in t\u00fcm Blade (Livewire i\u00e7in) veya Vue\/React (Inertia.js i\u00e7in) bile\u015fenlerini <code>resources\/views\/vendor\/jetstream<\/code> veya <code>resources\/js\/Pages<\/code> dizinlerine kopyalar. Art\u0131k bu dosyalar\u0131 kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re d\u00fczenleyebilirsiniz. \u00d6rne\u011fin, kay\u0131t formuna ek bir alan eklemek veya profil y\u00f6netim sayfas\u0131n\u0131n tasar\u0131m\u0131n\u0131 de\u011fi\u015ftirmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p><strong>\u00d6nemli Not:<\/strong> <code>vendor:publish<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, Jetstream g\u00fcncellemeleri geldi\u011finde bu dosyalar otomatik olarak g\u00fcncellenmeyecektir. Kendi \u00f6zelle\u015ftirmelerinizi yaparken dikkatli olmal\u0131 ve gelecekteki g\u00fcncellemelerle \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlemek i\u00e7in de\u011fi\u015fikliklerinizi iyi y\u00f6netmelisiniz.<\/p>\n<h4>Rotay\u0131 De\u011fi\u015ftirme<\/h4>\n<p>Jetstream, kimlik do\u011frulama ile ilgili rotalar\u0131 (\u00f6rne\u011fin, giri\u015f, kay\u0131t, \u015fifre s\u0131f\u0131rlama) <code>FortifyServiceProvider.php<\/code> dosyas\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlar. Bu rotalar\u0131n baz\u0131lar\u0131n\u0131 \u00f6zelle\u015ftirmek isteyebilirsiniz. \u00d6rne\u011fin, giri\u015f sayfas\u0131n\u0131n varsay\u0131lan URL&#8217;sini de\u011fi\u015ftirmek i\u00e7in <code>FortifyServiceProvider<\/code> i\u00e7indeki <code>boot<\/code> metodunda de\u011fi\u015fiklik yapabilirsiniz:<\/p>\n<pre><code class=\"language-php\">use Laravel\\Fortify\\Fortify;\n\npublic function boot()\n{\n    \/\/ ...\n    Fortify::loginView(function () {\n        return view('auth.login'); \/\/ Kendi \u00f6zel giri\u015f g\u00f6r\u00fcn\u00fcm\u00fcn\u00fcz\u00fc kullan\u0131n\n    });\n    \/\/ ...\n}<\/code><\/pre>\n<p>Benzer \u015fekilde, kay\u0131t veya \u015fifre s\u0131f\u0131rlama g\u00f6r\u00fcn\u00fcmlerini de de\u011fi\u015ftirebilirsiniz.<\/p>\n<h4>Action&#8217;lar\u0131 \u00d6zelle\u015ftirme<\/h4>\n<p>Jetstream ve Fortify, kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi i\u015flemlerinin mant\u0131\u011f\u0131n\u0131 <code>app\/Actions\/Fortify<\/code> ve <code>app\/Actions\/Jetstream<\/code> dizinlerinde bulunan action s\u0131n\u0131flar\u0131 arac\u0131l\u0131\u011f\u0131yla y\u00f6netir. Bu s\u0131n\u0131flar\u0131 \u00f6zelle\u015ftirerek varsay\u0131lan davran\u0131\u015flar\u0131 de\u011fi\u015ftirebilirsiniz.<\/p>\n<p>\u00d6rne\u011fin, kay\u0131t i\u015flemine ek bir alan eklemek isterseniz (<code>telefon_numarasi<\/code> gibi):<\/p>\n<p>1.  <strong>Veritaban\u0131 migration&#8217;\u0131 olu\u015fturun:<\/strong><\/p>\n<pre><code class=\"language-bash\">php artisan make:migration add_phone_number_to_users_table --table=users<\/code><\/pre>\n<p>    Migration dosyas\u0131nda <code>phone_number<\/code> s\u00fctununu ekleyin.<br \/>\n2.  <strong><code>CreateNewUser<\/code> action&#8217;\u0131n\u0131 d\u00fczenleyin:<\/strong><br \/>\n    <code>app\/Actions\/Fortify\/CreateNewUser.php<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve <code>create<\/code> metodunu a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-php\">use App\\Models\\User;\n    use Illuminate\\Support\\Facades\\Hash;\n    use Illuminate\\Support\\Facades\\Validator;\n    use Laravel\\Fortify\\Contracts\\CreatesNewUsers;\n    use Laravel\\Jetstream\\Jetstream;\n\n    class CreateNewUser implements CreatesNewUsers\n    {\n        use PasswordValidationRules;\n\n        public function create(array $input)\n        {\n            Validator::make($input, [\n                'name' => ['required', 'string', 'max:255'],\n                'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],\n                'password' => $this->passwordRules(),\n                'phone_number' => ['nullable', 'string', 'max:20'], \/\/ Yeni alan i\u00e7in do\u011frulama kural\u0131\n                'terms' => Jetstream::has=Feature(Jetstream::TermsAndPrivacyPolicy) ? ['accepted', 'required'] : '',\n            ])->validate();\n\n            return User::create([\n                'name' => $input['name'],\n                'email' => $input['email'],\n                'password' => Hash::make($input['password']),\n                'phone_number' => $input['phone_number'] ?? null, \/\/ Yeni alan\u0131 kaydet\n            ]);\n        }\n    }<\/code><\/pre>\n<p>3.  <strong>Kay\u0131t formuna alan\u0131 ekleyin:<\/strong><br \/>\n    Yay\u0131mlad\u0131\u011f\u0131n\u0131z <code>resources\/views\/auth\/register.blade.php<\/code> (Livewire) veya <code>resources\/js\/Pages\/Auth\/Register.vue<\/code> (Inertia.js) dosyas\u0131na <code>telefon_numarasi<\/code> alan\u0131n\u0131 ekleyin.<\/p>\n<p>Bu y\u00f6ntemle, Jetstream&#8217;in sa\u011flad\u0131\u011f\u0131 temel i\u015flevlerin herhangi birini kendi i\u015f mant\u0131\u011f\u0131n\u0131za g\u00f6re geni\u015fletebilir veya de\u011fi\u015ftirebilirsiniz.<\/p>\n<h4>Livewire\/Inertia Bile\u015fenlerini De\u011fi\u015ftirme<\/h4>\n<p>Yay\u0131mlad\u0131\u011f\u0131n\u0131z view&#8217;lar aras\u0131nda, Jetstream&#8217;in ana navigasyon men\u00fcs\u00fc (<code>navigation-menu.blade.php<\/code> veya ilgili Vue\/React bile\u015feni) ve profil y\u00f6netim sayfalar\u0131 gibi bir\u00e7ok bile\u015fen bulunur. Bu bile\u015fenleri do\u011frudan d\u00fczenleyerek uygulaman\u0131z\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve hissini tamamen de\u011fi\u015ftirebilirsiniz.<\/p>\n<p>*   <strong>CSS\/Tailwind \u00d6zelle\u015ftirmeleri:<\/strong> Jetstream, varsay\u0131lan olarak Tailwind CSS kullan\u0131r. <code>tailwind.config.js<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek veya \u00f6zel CSS ekleyerek renkleri, fontlar\u0131 ve genel stilini uygulaman\u0131z\u0131n markas\u0131na uygun hale getirebilirsiniz.<br \/>\n*   <strong>Navigasyon Men\u00fcs\u00fc Entegrasyonu:<\/strong> <code>navigation-menu.blade.php<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek kendi \u00f6zel ba\u011flant\u0131lar\u0131n\u0131z\u0131 ekleyebilir veya mevcut ba\u011flant\u0131lar\u0131 kald\u0131rabilirsiniz. Bu, uygulaman\u0131z\u0131n genel navigasyon yap\u0131s\u0131na Jetstream bile\u015fenlerini entegre etmek i\u00e7in \u00f6nemlidir.<\/p>\n<h4>Feature Flag&#8217;leri ile \u00d6zelle\u015ftirme<\/h4>\n<p>Jetstream, belirli \u00f6zellikleri (\u00f6rne\u011fin, API token y\u00f6netimi, tak\u0131m y\u00f6netimi, profil foto\u011fraf\u0131) etkinle\u015ftirmek veya devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in &#8220;feature flag&#8221; mekanizmas\u0131 kullan\u0131r. Bu bayraklar, <code>config\/jetstream.php<\/code> dosyas\u0131nda bulunur.<\/p>\n<pre><code class=\"language-php\">\/\/ config\/jetstream.php\nreturn [\n    \/\/ ...\n    'features' => [\n        Features::profilePhotos(),\n        Features::apiTokens(),\n        Features::teams(),\n        Features::twoFactorAuthentication([\n            'confirm' => true,\n        ]),\n    ],\n    \/\/ ...\n];<\/code><\/pre>\n<p>Bu diziden bir \u00f6zelli\u011fi kald\u0131rarak veya ekleyerek, Jetstream&#8217;in hangi i\u015flevleri uygulaman\u0131zda sunaca\u011f\u0131n\u0131 kontrol edebilirsiniz. \u00d6rne\u011fin, API token y\u00f6netimine ihtiyac\u0131n\u0131z yoksa <code>Features::apiTokens()<\/code> sat\u0131r\u0131n\u0131 kald\u0131rabilirsiniz.<\/p>\n<p>Jetstream&#8217;in bu esnek \u00f6zelle\u015ftirme yetenekleri, geli\u015ftiricilerin temel kimlik do\u011frulama altyap\u0131s\u0131ndan \u00f6d\u00fcn vermeden uygulamalar\u0131n\u0131 kendi \u00f6zel gereksinimlerine g\u00f6re \u015fekillendirmelerine olanak tan\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m Senaryolar\u0131 ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Laravel Jetstream&#8217;in temel kurulum ve \u00f6zelle\u015ftirmelerinin \u00f6tesinde, uygulaman\u0131z\u0131n gereksinimlerine g\u00f6re daha geli\u015fmi\u015f senaryolarda da kullanabilirsiniz.<\/p>\n<h4>Middleware Kullan\u0131m\u0131<\/h4>\n<p>Jetstream ile kimlik do\u011frulama mekanizmas\u0131n\u0131 kurduktan sonra, belirli rotalar\u0131 veya rota gruplar\u0131n\u0131 sadece oturum a\u00e7m\u0131\u015f kullan\u0131c\u0131lar i\u00e7in eri\u015filebilir hale getirmeniz gerekir. Laravel&#8217;in <code>auth<\/code> middleware&#8217;i bu ama\u00e7la kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Web Rotas\u0131 Korumas\u0131:<\/strong> Web tabanl\u0131 rotalar\u0131n\u0131z i\u00e7in <code>web<\/code> middleware grubunda veya do\u011frudan rota tan\u0131m\u0131nda <code>auth<\/code> middleware&#8217;ini kullanabilirsiniz:<\/p>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\n    Route::middleware(['auth'])->group(function () {\n        Route::get('\/dashboard', function () {\n            return view('dashboard');\n        })->name('dashboard');\n    });<\/code><\/pre>\n<p>*   <strong>API Rotas\u0131 Korumas\u0131:<\/strong> E\u011fer API tokenlar\u0131 kullan\u0131yorsan\u0131z, API rotalar\u0131n\u0131z\u0131 <code>auth:sanctum<\/code> middleware&#8217;i ile koruyabilirsiniz. Bu, Laravel Sanctum&#8217;\u0131n API tokenlar\u0131 arac\u0131l\u0131\u011f\u0131yla kimlik do\u011frulamay\u0131 sa\u011flar:<\/p>\n<pre><code class=\"language-php\">\/\/ routes\/api.php\n    Route::middleware(['auth:sanctum'])->group(function () {\n        Route::get('\/user', function (Request $request) {\n            return $request->user();\n        });\n    });<\/code><\/pre>\n<h4>Yetkilendirme (Authorization)<\/h4>\n<p>Kimlik do\u011frulama, kullan\u0131c\u0131n\u0131n kim oldu\u011funu belirlerken, yetkilendirme kullan\u0131c\u0131n\u0131n ne yapmas\u0131na izin verildi\u011fini belirler. Jetstream, Laravel&#8217;in Gates ve Policies \u00f6zellikleriyle sorunsuz bir \u015fekilde entegre olur.<\/p>\n<p>*   <strong>Gates:<\/strong> Basit yetkilendirme kontrolleri i\u00e7in Gates kullanabilirsiniz. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n bir tak\u0131m\u0131 y\u00f6netmeye yetkili olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek:<\/p>\n<pre><code class=\"language-php\">\/\/ AuthServiceProvider.php\n    use App\\Models\\User;\n    use App\\Models\\Team;\n    use Illuminate\\Support\\Facades\\Gate;\n\n    public function boot()\n    {\n        $this->registerPolicies();\n\n        Gate::define('manage-team', function (User $user, Team $team) {\n            return $user->ownsTeam($team);\n        });\n    }<\/code><\/pre>\n<p>    Daha sonra bir Blade dosyas\u0131nda: <code>@can('manage-team', $team)<\/code><br \/>\n*   <strong>Policies:<\/strong> Daha karma\u015f\u0131k ve model odakl\u0131 yetkilendirme mant\u0131\u011f\u0131 i\u00e7in Policies kullan\u0131n. \u00d6rne\u011fin, <code>TeamPolicy<\/code> olu\u015fturarak bir tak\u0131m\u0131n olu\u015fturulmas\u0131, g\u00fcncellenmesi veya silinmesi gibi i\u015flemleri kontrol edebilirsiniz. Jetstream&#8217;in tak\u0131m y\u00f6netimi, varsay\u0131lan olarak zaten baz\u0131 temel <code>TeamPolicy<\/code> kurallar\u0131 ile gelir.<\/p>\n<h4>Test Etme<\/h4>\n<p>Jetstream, kapsaml\u0131 bir test paketiyle birlikte gelir. Kendi uygulaman\u0131z\u0131 geli\u015ftirirken, Jetstream&#8217;in kimlik do\u011frulama ak\u0131\u015flar\u0131n\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in kendi testlerinizi yazman\u0131z \u00f6nemlidir. Laravel&#8217;in entegrasyon testleri ve taray\u0131c\u0131 testleri (\u00f6rne\u011fin Dusk ile) bu konuda size yard\u0131mc\u0131 olabilir.<\/p>\n<p>*   <code>tests\/Feature\/AuthenticationTest.php<\/code> gibi dosyalar\u0131 inceleyerek Jetstream&#8217;in kendi testlerini nas\u0131l yazd\u0131\u011f\u0131n\u0131 g\u00f6rebilir ve kendi testleriniz i\u00e7in bir ba\u015flang\u0131\u00e7 noktas\u0131 olarak kullanabilirsiniz.<\/p>\n<h4>Deployment (\u00dcretim Ortam\u0131na Da\u011f\u0131t\u0131m)<\/h4>\n<p>Uygulaman\u0131z\u0131 bir \u00fcretim ortam\u0131na da\u011f\u0131t\u0131rken dikkat etmeniz gereken baz\u0131 noktalar vard\u0131r:<\/p>\n<p>*   <strong>Ortam De\u011fi\u015fkenleri:<\/strong> <code>.env<\/code> dosyan\u0131zdaki <code>APP_ENV=production<\/code> ve <code>APP_DEBUG=false<\/code> gibi ayarlar\u0131 do\u011fru yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun. Veritaban\u0131 ba\u011flant\u0131 bilgilerinin de do\u011fru oldu\u011fundan emin olun.<br \/>\n*   <strong>\u00d6nbellekleme:<\/strong> Performans\u0131 art\u0131rmak i\u00e7in Laravel&#8217;in yap\u0131land\u0131rma, rota ve g\u00f6r\u00fcn\u00fcm \u00f6nbelleklerini temizleyin ve yeniden olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache\n    php artisan route:cache\n    php artisan view:cache<\/code><\/pre>\n<p>*   <strong>JavaScript ve CSS Derlemesi:<\/strong> \u00dcretim i\u00e7in JavaScript ve CSS dosyalar\u0131n\u0131 s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ve optimize edilmi\u015f bir \u015fekilde derleyin:<\/p>\n<pre><code class=\"language-bash\">npm run build<\/code><\/pre>\n<p>*   <strong>PHP Optimizasyonu:<\/strong> PHP opcache&#8217;i etkinle\u015ftirerek PHP kodunuzun daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n.<br \/>\n*   <strong>SSL\/HTTPS:<\/strong> Uygulaman\u0131z\u0131n g\u00fcvenli\u011fi i\u00e7in her zaman HTTPS kullan\u0131n.<\/p>\n<p>Bu ipu\u00e7lar\u0131, Jetstream ile olu\u015fturdu\u011funuz Laravel uygulaman\u0131z\u0131 daha g\u00fcvenli, performansl\u0131 ve bak\u0131m\u0131 kolay hale getirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Laravel Jetstream, modern web uygulamalar\u0131 geli\u015ftiren PHP geli\u015ftiricileri i\u00e7in oyun de\u011fi\u015ftirici bir ara\u00e7t\u0131r. Kimlik do\u011frulama ve kullan\u0131c\u0131 y\u00f6netimi gibi temel ancak karma\u015f\u0131k i\u015flevleri h\u0131zl\u0131, g\u00fcvenli ve esnek bir \u015fekilde uygulamaya entegre etme yetene\u011fi sunar. Kay\u0131t, giri\u015f, \u015fifre s\u0131f\u0131rlama gibi standart \u00f6zelliklerin yan\u0131 s\u0131ra, iki fakt\u00f6rl\u00fc kimlik do\u011frulama, API token y\u00f6netimi, taray\u0131c\u0131 oturum y\u00f6netimi ve opsiyonel tak\u0131m y\u00f6netimi gibi geli\u015fmi\u015f \u00f6zelliklerle birlikte gelir.<\/p>\n<p>Jetstream&#8217;in Laravel Fortify \u00fczerine in\u015fa edilmi\u015f olmas\u0131, arka u\u00e7 mant\u0131\u011f\u0131n\u0131n sa\u011flam ve test edilmi\u015f olmas\u0131n\u0131 sa\u011flarken, Livewire + Blade veya Inertia.js + Vue.js gibi pop\u00fcler UI y\u0131\u011f\u0131nlar\u0131 sayesinde geli\u015ftiricilere aray\u00fcz katman\u0131nda \u00f6nemli bir esneklik sunar. Bu, projenizin gereksinimlerine ve ekibinizin yetkinliklerine en uygun teknoloji se\u00e7imini yapman\u0131za olanak tan\u0131r.<\/p>\n<p>Bu makalede, Jetstream&#8217;in ne oldu\u011funu, neden kullanman\u0131z gerekti\u011fini, ad\u0131m ad\u0131m nas\u0131l kurulaca\u011f\u0131n\u0131, sundu\u011fu temel \u00f6zellikleri ve bu \u00f6zellikleri nas\u0131l \u00f6zelle\u015ftirebilece\u011finizi detayl\u0131 bir \u015fekilde inceledik. Kurulum \u00f6ncesi haz\u0131rl\u0131klardan ba\u015flayarak, stack se\u00e7imi, veritaban\u0131 g\u00f6\u00e7leri, action&#8217;lar\u0131 \u00f6zelle\u015ftirme ve view&#8217;lar\u0131 yay\u0131mlama gibi konulara de\u011findik. Ayr\u0131ca, middleware kullan\u0131m\u0131, yetkilendirme ve da\u011f\u0131t\u0131m gibi geli\u015fmi\u015f senaryolar i\u00e7in de ipu\u00e7lar\u0131 sunduk.<\/p>\n<p>Laravel Jetstream&#8217;i kullanarak, uygulaman\u0131z\u0131n en kritik b\u00f6l\u00fcmlerinden birini h\u0131zl\u0131ca hayata ge\u00e7irebilir, geli\u015ftirme s\u00fcrenizi \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir ve daha da \u00f6nemlisi, uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rabilirsiniz. Art\u0131k temel kimlik do\u011frulama s\u00fcre\u00e7leriyle u\u011fra\u015fmak yerine, uygulaman\u0131z\u0131n benzersiz i\u015f mant\u0131\u011f\u0131na ve yenilik\u00e7i \u00f6zelliklerine odaklanarak kullan\u0131c\u0131lara daha fazla de\u011fer sunabilirsiniz. Jetstream, Laravel ekosistemindeki yerini sa\u011flamla\u015ft\u0131rm\u0131\u015f ve modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri\nLaravel, PHP tabanl\u0131 web uygulamalar\u0131 geli\u015ftirmek i\u00e7in en pop\u00fcler ve g","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[133],"tags":[],"class_list":{"0":"post-34942","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri\" \/>\n<meta property=\"og:description\" content=\"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri Laravel, PHP tabanl\u0131 web uygulamalar\u0131 geli\u015ftirmek i\u00e7in en pop\u00fcler ve g\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-23T20:40:54+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri\",\"datePublished\":\"2025-11-23T20:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\"},\"wordCount\":4248,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PHP\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\",\"name\":\"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-23T20:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri","og_description":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri Laravel, PHP tabanl\u0131 web uygulamalar\u0131 geli\u015ftirmek i\u00e7in en pop\u00fcler ve g","og_url":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-23T20:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri","datePublished":"2025-11-23T20:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/"},"wordCount":4248,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PHP"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/","url":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/","name":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-23T20:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/laravel-jetstream-ile-baslangic-modern-kimlik-dogrulama-cozumleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Laravel Jetstream ile Ba\u015flang\u0131\u00e7: Modern Kimlik Do\u011frulama \u00c7\u00f6z\u00fcmleri"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34942"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34942\/revisions"}],"predecessor-version":[{"id":34943,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34942\/revisions\/34943"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}