İlkeye Dayalı Yetkilendirme
Yeniden kullanılabilir yetkilendirme ilkeleri tanımlayın.
İlkeye Dayalı Yetkilendirme, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. 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.
İlke Modeli
ASP.NET Core'da her yetkilendirme denetimi sonuçta bir ilkeden geçer. Rol ve claim öznitelikleri, arka planda ilkeler oluşturan kısa yollardır.
Adlandırılmış ilkeleri tanımlamak kurallarınızı merkezileştirir ve denetleyicileri temiz tutar.
[Authorize(Policy = "CanManageOrders")]AddAuthorization
İlkeleri AddAuthorization ile hizmet kapsayıcısına kaydedin. Her ilkeye benzersiz bir ad verilir.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CanManageOrders", policy =>
policy.RequireRole("admin", "sales"));
});RequireAuthenticatedUser
En temel gereksinim, kullanıcının yalnızca oturum açmış olmasıdır. RequireAuthenticatedUser, anonim çağıranları reddeder.
options.AddPolicy("SignedIn", policy =>
policy.RequireAuthenticatedUser());Gereksinimleri Birleştirme
Bir ilke oluşturucu birden çok gereksinimi zincirler; ilke yalnızca tümünün başarılı olması durumunda başarılı olur.
options.AddPolicy("SeniorEditor", policy =>
policy
.RequireAuthenticatedUser()
.RequireRole("editor")
.RequireClaim("seniority", "senior"));Varsayılan İlke
Bağımsız ve parametresiz bir [Authorize], kullanıma hazır durumda yalnızca kimliği doğrulanmış bir kullanıcı gerektiren varsayılan ilkeyi kullanır. Bunu değiştirebilirsiniz.
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("email_verified", "true")
.Build();Yedek İlke
Yedek ilke, üzerinde hiçbir yetkilendirme özniteliği bulunmayan uç noktalara uygulanır; bu, varsayılan olarak güvenliği sağlamanın güçlü bir yoludur.
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]AllowAnonymous ile Kapsam Dışına Çıkma
Yedek ilke her şeyi kilitlediğinde oturum açma veya sistem durumu denetimleri gibi herkese açık uç noktaları kullanıma sunmak için [AllowAnonymous] kullanın.
[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");İlkeyi Uç Noktalara Uygulama
Bir ilkeye özniteliklerde veya Minimal API uzantılarında adıyla başvurun.
// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();
// Minimal API
app.MapPost("/publish", () => Results.Ok())
.RequireAuthorization("SeniorEditor");Uç Noktaları Gruplama
Bir ilkeyi tüm rota grubuna uygulayarak içindeki her uç noktanın bu ilkeyi devralmasını sağlayın.
var admin = app.MapGroup("/admin")
.RequireAuthorization("CanManageOrders");
admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());Gereksinimlerin İç İşleyişi
Her Require* çağrısı, ilkeye bir IAuthorizationRequirement ekler. Eşleşen bir işleyici her gereksinimi değerlendirir. Yerleşik gereksinimlerde bu işlem otomatiktir; özel kurallar için özel bir işleyici gerekir (sonraki ders).
// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirementİlkeler Nerede Tanımlanmalı
Tüm ilke tanımlarını, kolayca bulunabilmeleri ve sınanabilmeleri için tek bir uzantı yönteminde tutun.
public static IServiceCollection AddAppPolicies(
this IServiceCollection services)
{
services.AddAuthorization(o =>
{
o.AddPolicy("SignedIn", p => p.RequireAuthenticatedUser());
o.AddPolicy("CanManageOrders", p => p.RequireRole("admin"));
});
return services;
}Hızlı Kontrol
Varsayılan ve yedek ilkeler hakkındaki anlayışınızı sınayın.
Özet
İlke tabanlı yetkilendirmeyi öğrendiniz:
AddPolicy, adlandırılmış ve yeniden kullanılabilir kurallar tanımlar.RequireAuthenticatedUser,RequireRoleveRequireClaim, AND mantığıyla birleştirilir.- DefaultPolicy, bağımsız
[Authorize]özniteliğini destekler; FallbackPolicy işaretlenmemiş uç noktaların güvenliğini sağlar. [AllowAnonymous]kapsam dışına çıkmayı sağlar.
Sırada: özel yetkilendirme gereksinimleri ve işleyicileri.
Sıkça Sorulan Sorular
“İlkeye Dayalı Yetkilendirme” dersi ücretsiz mi?
Evet — “İlkeye 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.
“İlkeye Dayalı Yetkilendirme” dersinde ne öğreneceğim?
Yeniden kullanılabilir yetkilendirme ilkeleri tanımlayı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 3. dersidir.
“İlkeye 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