Angular Guard’lar: Route Koruma ve Kullanıcı Yetkilendirme

Bu yazıda, guard’ların ne olduğunu, CLI ile nasıl oluşturulacağını ve kod içerisinde nasıl kullanılacağını ele alacağız.

Angular’da guard, bir rotaya erişim izni verip vermeme konusunda karar almanızı sağlayan bir servistir. Başka bir deyişle, belirli şartlar altında kullanıcıların belirli bir rotaya erişimini sınırlamak istediğinizde guard’ları kullanabilirsiniz.

Guard’lar sayesinde: 

 ⇒  Kullanıcının oturum açıp açmadığını kontrol ederek özel rotalara erişimi kısıtlayabilirsiniz.

 ⇒  Belirli bir role sahip kullanıcılara özel rotalara erişim izni verebilirsiniz.

 ⇒  Uygulama içerisindeki bazı verilere göre rota erişimini dinamik bir şekilde yönetebilirsiniz.

Guard Örnekleri

Angular CLI ile kolayca guard oluşturabilirsiniz. Örneğin, AuthGuard adında bir guard oluşturmak için aşağıdaki komutu kullanabilirsiniz:

Bu komut ile oluşturulan guard, CanActivate interface’ini implemente eder. Eğer farklı bir guard türü (CanLoad, CanDeactivate vb.) oluşturmak isterseniz, CLI’ye bu bilgiyi verebilirsiniz:

Angular’da farklı guard türleri vardır ve her biri, uygulamadaki rotaların farklı yönleriyle ilgilenir. İşte bu guard türlerinin temel farkları:

CanActivate:

Bu guard, bir rota etkinleştirilmeden önce kontrol edilir. Örneğin, belirli bir rota veya bileşene erişim izni olup olmadığını kontrol etmek için kullanılır. Genellikle kullanıcının giriş yapıp yapmadığını veya belirli bir role sahip olup olmadığını kontrol etmek için kullanılır.

CanLoad:

Bu guard, bir modülün tembel yüklemesi (lazy loading) gerçekleşmeden önce kontrol edilir. Tembel yüklenen bir modülü yükleyip yüklememe kararı almak için kullanılır. Örneğin, kullanıcıya sadece giriş yaptığında bazı özelliklere erişim izni vermek istiyorsanız (ve bu özellikler tembel yüklenen bir modülde bulunuyorsa) CanLoad guard’ını kullanabilirsiniz.

CanDeactivate:

Bu guard, bir rota veya bileşenden ayrılmadan önce kontrol edilir. Kullanıcıyı, o sayfada yaptığı değişiklikleri kaybetme riskiyle karşı karşıya bırakmadan önce bir uyarı vermek veya kullanıcının belirli şartlar altında bir rotadan ayrılmasını engellemek için kullanılır. Örneğin, bir formda değişiklik yaptıktan sonra kullanıcıyı bu değişiklikleri kaydedilmeden sayfayı terk etmeme konusunda uyarabilirsiniz.

 AuthGuard:  Kullanıcının giriş yapıp yapmadığını kontrol eder.

 RoleGuard:  Kullanıcının belirli bir role sahip olup olmadığını kontrol eder.

 DataGuard:  Bazı dinamik verilere göre rota erişimini kontrol eder.

Bu örnekte, checkSomeDataCondition metodu rastgele bir değer döndürmektedir. Ancak gerçekte bu fonksiyon, API çağrıları veya lokal veriye dayalı daha karmaşık bir şart kontrolü gerçekleştirebilir.

Bu guard’ları rotanızda kullanmak için:

Guard’lar, Angular’da rota erişimini yönetmek için oldukça güçlü araçlardır. Gerek oturum kontrolü, gerekse belirli koşullara göre rota erişimini sınırlamak için Angular guard’larını kullanabilirsiniz.

Umarım “Angular Guard’lar: Route Koruma ve Kullanıcı Yetkilendirme” başlıklı yazım sizin için faydalı olmuştur.

Şu yazılar da ilginizi çekebilir.

Angular Routing ve Navigation

Yeni bir yazımda görüşmek üzere.

Happy coding!

Yorum Yazın