7

Denetimlerde [Authorize] özelliğinin özel uygulamasına sahip olmak isterim.ASP.NET Çekirdeğinde (ASP.NET 5) özel Yetkilendirme nasıl oluşturulur?

Yaptığım şey budur. ConfigureServices içinde

  1. StartupClass

    services.AddAuthorization(options => 
    {  
        options.AddPolicy("Authorize", policy => 
        { 
         policy.AddRequirements(new MyRequirement()); 
        }); 
    }); 
    
  2. MyRequirement

    public class MyRequirement : AuthorizationHandler<MyRequirement>, IAuthorizationRequirement 
    { 
        protected override void Handle(AuthorizationContext context, MyRequirement requirement) 
        { 
         //some work 
         //if shloud be authorized 
         context.Succeed(requirement); 
        } 
    } 
    
  3. TestController

    [Authorize("Authorize")] 
    [Route("api/[controller]")] 
    public class TestController : Controller 
    { 
        ... 
    } 
    

Neyi özlüyorum? MyRequirement yetkilendiricisi hiçbir zaman aranmaz. Teşekkür ederiz.

+2

aslında doğrulanmış mı? Yetkilendirme, kimliğinize sahip oluncaya kadar politikalara başlamaz. – blowdart

+0

değilim. Temel Kimlik Doğrulama aramasını arıyorum gibi görünüyor .. – Chatumbabub

+0

HTTP auth'ında olduğu gibi basit mi, yoksa temelde olduğu gibi, test ederken her isteği üzerine bu kimliği çekmek istiyorum? – blowdart

cevap

6

ben bu bölümü eksik inanıyoruz:

services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>(); 

Source

+0

Politika, tüm yetkilendirme isteğinde uygulanacak şekilde adsız bir İlke uygulamak mümkün mü? –

+0

Başlıklar buradan nasıl erişilir? –

+0

@mr_squall, kullanıcı/talep sorumlusunu almak için başlıklara erişmeniz gerekiyorsa, ** context.user.Identity ** 'yi ClaimsIdentity olarak yazarak kullanabilirsiniz. – raghav710