Role Dayalı Yetkilendirme
Uç noktaları kullanıcı rollerine göre kısıtlayın.
Role Dayalı Yetkilendirme, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. 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.
Kimlik Doğrulama ve Yetkilendirme
Kimlik doğrulama "kimsiniz?" sorusunu yanıtlar. Yetkilendirme ise "ne yapmanıza izin veriliyor?" sorusunu yanıtlar.
ASP.NET Core'daki en basit yetkilendirme modeli rol tabanlı modeldir: bir kullanıcı rollere aittir ve uç noktalar belirli roller gerektirir.
// User has roles: admin, editor
// Endpoint requires: adminRoller Nereden Gelir?
Rol, ClaimTypes.Role türünde bir talepten ibarettir. Bir JWT üretirken kullanıcının sahip olduğu her rol için bir rol talebi ekleyin.
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Role, "admin"),
new Claim(ClaimTypes.Role, "editor")
};Rol Talebi Türü
[Authorize(Roles=...)] ve User.IsInRole işlevlerinin çalışması için işleyicinin hangi talep türünün rolü temsil ettiğini bilmesi gerekir.
role JWT anahtarı varsayılan olarak ClaimTypes.Role ile eşlenir. Özel bir anahtar kullanıyorsanız doğrulayıcıya RoleClaimType aracılığıyla bildirin.
options.TokenValidationParameters = new TokenValidationParameters
{
RoleClaimType = ClaimTypes.Role
};Tek Bir Rol Gerektirme
Bir denetleyiciye veya eyleme [Authorize(Roles = "admin")] uygulayın. Yalnızca admin rolüne sahip kullanıcılar erişebilir.
[Authorize(Roles = "admin")]
[HttpDelete("users/{id}")]
public IActionResult DeleteUser(int id)
{
// only admins reach here
return NoContent();
}Birden Çok Robun Herhangi Birini Gerektirme
Virgülle ayrılmış bir liste OR anlamına gelir: kullanıcının listelenen rollerden en az birine sahip olması gerekir.
[Authorize(Roles = "admin,editor")]
[HttpPut("articles/{id}")]
public IActionResult Update(int id) => Ok();
// admins OR editors are allowedBirden Çok Rol Gerektirme (AND)
Birden çok rolün tümünü gerektirmek için birden fazla [Authorize] özniteliğini art arda ekleyin. Her biri başarılı olmalıdır.
[Authorize(Roles = "employee")]
[Authorize(Roles = "manager")]
public IActionResult ApproveBudget() => Ok();
// must be BOTH employee AND managerKodda Rolleri Denetleme
Bazen yalnızca kapıda değil, yöntem gövdesinin içinde de rol denetimi yapmanız gerekir. User.IsInRole kullanın.
public IActionResult GetReport()
{
var data = BuildReport();
if (User.IsInRole("admin"))
data.IncludeSensitiveColumns();
return Ok(data);
}Minimal API Karşılığı
Minimal APIs, satır içi bir ilkeyle .RequireAuthorization kullanır veya daha basit olarak adlandırılmış bir ilke üzerinden rol gerektirebilirsiniz.
app.MapDelete("/users/{id}", (int id) => Results.NoContent())
.RequireAuthorization(p => p.RequireRole("admin"));Hiyerarşideki Roller
ASP.NET Core yerleşik bir rol hiyerarşisine sahip değildir. Yöneticilerin örtük olarak editör yetkilerine de sahip olması gerekiyorsa oturum açma sırasında her iki rol bildirimini de verin veya bunu ilkelerle modelleyin (sonraki kurs).
// Grant both at login if admin >= editor
new Claim(ClaimTypes.Role, "admin");
new Claim(ClaimTypes.Role, "editor");Roller Yetersiz Kaldığında
Roller kaba tanelidir. Kurallar verilere (örneğin, "yalnızca sahibi düzenleyebilir") veya ayrıntılı izinlere bağlı olduğunda rol denetimleri karmaşıklaşır.
İşte bu noktada claims tabanlı ve ilke tabanlı yetkilendirme devreye girer.
// Hard to express with roles alone:
// "editors, but only for their own department"403 ile 401 Döndürme
Kullanıcının kimliği doğrulanmamışsa rol denetimi 401 Unauthorized döndürür. Kimliği doğrulanmış ancak gerekli role sahip değilse 403 Forbidden alır.
// No/invalid token -> 401 Unauthorized
// Valid token, wrong role -> 403 ForbiddenHızlı Kontrol
Rol bilginizi sınayın.
Özet
Rol tabanlı yetkilendirmeyi öğrendiniz:
- Roller, belirteçte bulunan
ClaimTypes.Rolebildirimleridir. [Authorize(Roles = "a,b")]OR anlamına gelir; öznitelikleri art arda kullanmak AND anlamına gelir.User.IsInRolekod içindeki rolleri denetler.- Roller kaba tanelidir; veriye dayalı kurallar daha zengin modellere ihtiyaç duyar.
Sırada: claims tabanlı yetkilendirme.
Sıkça Sorulan Sorular
“Role Dayalı Yetkilendirme” dersi ücretsiz mi?
Evet — “Role 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.
“Role Dayalı Yetkilendirme” dersinde ne öğreneceğim?
Uç noktaları kullanıcı rollerine göre kısıtlayı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 1. dersidir.
“Role 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