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 = trueBelirtece 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
- Role Dayalı Yetkilendirme
- Taleplere Dayalı Yetkilendirme
- İlkeye Dayalı Yetkilendirme
- Özel Yetkilendirme Gereksinimleri