0Pricing
C# Academy · Ders

Taleplere Dayalı Yetkilendirme

Yetkilendirmeyi kullanıcı taleplerine göre yapın.

Taleplere Dayalı Yetkilendirme, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

Rollerin Ötesinde

Roller, claims kavramının özel bir durumudur. Claims tabanlı yetkilendirme yalnızca rolleri değil; e-posta, departman, abonelik katmanı veya izin bayrağı gibi herhangi bir claim'i denetler.

Bu, onlarca rol tanımlamaya gerek kalmadan daha ayrıntılı denetim sağlar.

// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = true

Belirtece Claims Ekleme

Yetkilendirme kurallarınızın denetleyeceği claims bildirimlerini oluşturun. Bildirim, tür/değer çiftidir.

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim("department", "sales"),
    new Claim("subscription", "pro"),
    new Claim("email_verified", "true")
};

Claims İlkesi Tanımlama

Claims tabanlı kurallar, AddAuthorization ile kaydedilen adlandırılmış ilkeler olarak ifade edilir. RequireClaim, kullanıcının belirli bir claim'e sahip olmasını gerektirir.

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("VerifiedEmail", policy =>
        policy.RequireClaim("email_verified", "true"));
});

Değersiz RequireClaim

Yalnızca claim'in var olmasıyla (değeri ne olursa olsun) ilgileniyorsanız RequireClaim çağrısını yalnızca türle yapın.

options.AddPolicy("HasDepartment", policy =>
    policy.RequireClaim("department"));

İzin Verilen Değerlerle RequireClaim

İzin verilen değerleri listeleyebilirsiniz; claim bunlardan herhangi biriyle eşleşirse ilke başarılı olur.

options.AddPolicy("PaidTier", policy =>
    policy.RequireClaim("subscription", "pro", "enterprise"));

Claims İlkesini Uygulama

[Authorize] içinde ilkeye adıyla başvurun.

[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();

Minimal API Kullanımı

Minimal APIs, aynı ilke adına RequireAuthorization üzerinden başvurur.

app.MapGet("/premium-reports", () => Results.Ok())
   .RequireAuthorization("PaidTier");

Birden Çok Claim Gereksinimini Birleştirme

Bir ilke birden çok RequireClaim çağrısını zincirleyebilir; tümü karşılanmalıdır (AND).

options.AddPolicy("VerifiedSales", policy =>
    policy
        .RequireClaim("email_verified", "true")
        .RequireClaim("department", "sales"));

Özel Mantık İçin RequireAssertion

Sabit bir değer denetimi yeterli olmadığında RequireAssertion, ClaimsPrincipal üzerinde rastgele bir koşul ifadesi çalıştırır.

options.AddPolicy("AdultUser", policy =>
    policy.RequireAssertion(ctx =>
    {
        var dob = ctx.User.FindFirst("birthdate")?.Value;
        return DateTime.TryParse(dob, out var d) &&
               d <= DateTime.UtcNow.AddYears(-18);
    }));

Çalışma Zamanında Claims Okuma

Yalnızca evet/hayır denetimine değil, değerin kendisine ihtiyaç duyduğunuzda bir eylem içinde claims bilgilerini doğrudan inceleyebilirsiniz.

var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");

Claims ve Roller - Hangisi Ne Zaman Kullanılmalı

Geniş kapsamlı görev işlevleri için rolleri kullanın. Öznitelikler ve özellik bayrakları için claims kullanın. Bunlar birlikte kullanılabilir; bir ilke aynı anda bir rol ve birkaç claim gerektirebilir.

options.AddPolicy("SalesManager", policy =>
    policy.RequireRole("manager")
          .RequireClaim("department", "sales"));

Hızlı Kontrol

Claims ilkeleri hakkındaki anlayışınızı sınayın.

Özet

Claims tabanlı yetkilendirmeyi öğrendiniz:

  • Yalnızca roller değil, herhangi bir claim erişimi denetleyebilir.
  • RequireClaim, varlığı veya belirli izin verilen değerleri denetler.
  • RequireAssertion, özel koşul ifadesi mantığını işler.
  • Claims ve roller tek bir adlandırılmış ilke içinde birlikte kullanılabilir.

Sırada: tam ilke tabanlı model.

Sıkça Sorulan Sorular

“Taleplere Dayalı Yetkilendirme” dersi ücretsiz mi?

Evet — “Taleplere Dayalı Yetkilendirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“Taleplere Dayalı Yetkilendirme” dersinde ne öğreneceğim?

Yetkilendirmeyi kullanıcı taleplerine göre yapın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Taleplere Dayalı Yetkilendirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Role Dayalı Yetkilendirme
  2. Taleplere Dayalı Yetkilendirme
  3. İlkeye Dayalı Yetkilendirme
  4. Özel Yetkilendirme Gereksinimleri
← C# Academy Sayfasına Dön