Angular

Angular 2 – JWT Token Nasıl Kullanılır ?

Bu yazıda Angular 2 ve üzeri versiyonlarda giriş işlemi ve sonrasında başlatılan oturumun (session) devam ettirilmesi için yapılması gereken işlemleri anlatacağım. Angular jwt token bazlı oturum yönetiminde en rahat frameworklerden birisi diyebiliriz. Gelişmiş mimarisi ve sunduğu bir çok native özellik sayesinde oturum yönetimini pratik bir şekilde gerçekleştirebiliyoruz.

MVC yapılardan farklı olarak SPA uygulamalarında oturum yönetimi için cookie yerine JWT ve benzeri token yapıları kullanılmaktadır.

Client tarafında gönderilen HTTP isteklerinin server tarafında kimlik doğrulama işleminin yapılabilmesi için SPA uygulamalarda Authorization headeri kullanılmaktadır. Kimliğin doğrulanabilmesi için giriş işlemi sırasında kullanıcıya bir erişim tokeni (Access Token) verilmekte ve bu token kullanılarak kullanıcının kimlik doğrulama işlemi yapılmaktadır.

Bunun için öncelikle giriş işlemi yaptıktan sonra API tarafından gönderilen erişim tokeninin Local Storage üzerinde kayıt edilmesi gerekmektedir.

Sonrasında ise kaydedilen token gönderdiğimiz HTTP isteklerine eklememiz gerekmektedir. Gönderdiğimiz bütün isteklerin header bilgilerini düzenlemek oldukça fazla zaman alacağı için burada Angular2 ile birlikte gelen Interceptor yapısını kullanacağız.

Interceptor Nedir ?

Başlamadan önce interceptor nedir gelin biraz bahsedelim. Özellikle backend mimarilerinde sıkça karşımıza çıkan middleware dediğimiz yapılar vardır. Middleware yapıları ile backend tarafında gerçekleşen iki yönlü trafiği (request ve response) tek bir merkez üzerinden kontrol edebilir ve manipüle edebiliriz. Interceptorler middleware adını verdiğimiz ara katman yapılarına benzer bir mantık ile çalışmaktadır.

Angular üzerinde HttpClient ile gönderdiğimiz istekleri interceptor yardımıyla dinleyebilir, kontrol edebilir ve manipüle edebiliriz. Gönderdiğimiz bütün http isteklerine tek tek müdahele etmeden, sadece tek bir tanımlama ile merkezi bir şekilde manipülasyon gerçekleştirebiliriz.

Interpceptorler hakkında daha fazla bilgi almak isterseniz Angular Interceptor Nedir ve Nasıl Kullanılır başlıklı yazıma göz atabilirsiniz!

Interceptor Kullanarak JWT Token Nasıl Gönderilir ?

Yukarıda bahsettiğimiz üzere interceptor yapısını kullanarak request ve response üzerinde işlem gerçekleştirebiliyoruz. Gönderdiğimiz http isteklerinin head, body kısımlarda çeşitli manipülasyon yapmak mümkün. Login olduktan sonra aldığımız tokeni interceptor yardımıyla giden bütün requestlerin header kısmına rahatça tek bir hamle ile ekleyebiliyoruz.

Öncelikle interceptor oluşturmak için aşağıda yer alan cli komutunu kullanabileceğiniz gibi manuel olarak da bu dosyayı oluşturabilirsiniz. Tek yapmanız gereken dosyayı oluşturduktan sonra oluşturacağınız sınıfa HttpInterceptor arayüzünü implement etmek.

ng generate interceptor append-jwt-token

Daha sonra oluşan interceptor dosyasını açın ve aşağıda yer aldığı gibi Local Storage içerisinde yer alan JWT tokeni kullanarak gönderilen isteklerin header bilgilerini düzenleyin ve Authorization headeri ekleyin.

Daha sonra oluşturduğumuz bu interceptor sınıfını app.module.ts içerisinde yer alan AppModule sınıfının modül dekoratörü içerisinde yer alan providers bölümünde tanımlamamız gerekiyor

İşte bu kadar artık HttpClient üzerinden gönderdiğiniz bütün istekler yukarıda yer alan AppendJwtToken interceptor’üne uğrayacak ve header bilgileri yeniden düzenlenerek yeniden gönderilecektir.

Interceptorler ve angular da oturum yönetimi gördüğüz üzere oldukça kolay arkadaşlar. Elbette burada ağırlıklı olarak sadece tokeni nasıl handle edeceğimizi gösterdik ancak merak ettiğiniz başka hususlar varsa sormaktan çekinmeyin 🙂

teoman.me

Recent Posts

Angular 17 ile Bizi Neler Bekliyor ?

Herkese Merhabalar. Bildiğiniz üzere bu ay Angular 17 yepyeni bir imaj çalışması ile birlikte yayına…

7 months ago

OpenLayers Nasıl Kullanılır ?

Herkese merhaba arkadaşlar. Önceki yazımızda openlayers nedir ve neden kullanmalıyız sorunu yanıtlamıştık. Popüler harita kütüphanelerinden…

7 months ago

Openlayers Nedir ? Neden Tercih Etmeliyiz ?

Merhaba arkadaşlar. Eğer CBS (Coğrafi Bilgi Sistemleri) dünyasına yeni yeni adımlar atıyorsanız adını sık sık…

7 months ago

Angular NGXS – 5 Dakikada State Management! Part I

Herkese merhabalar. Bugün angular ekosisteminde NGXS kullanarak nasıl state management yapacağımızı inceleyeceğiz. Angular state management…

8 months ago

Angular vs React! Hangisini Tercih Etmeliyiz ?

Herkese Merhaba. Bu yazımızda frontend camiasında faaliyet gösteren herkesin aklındaki o soruya bir açıklık getireceğiz.…

8 months ago

Angular Template Driven Form Nedir ? Nasıl Kullanılır ?

Uzun bir aradan sonra herkese merhaba :) Angular Template Driven Form Nedir, Ne işe yarar…

8 months ago