0

Bir denetleyici yöntemine erişecek olan rolün yetkilendirilmesinin en kolay yolu aşağıdakidir. TabiiBir denetleyiciye erişme yetkisi olan rolleri nasıl yönetirim?

[Authorize] 
public ActionResult Index() { return View(); } 

, o her yöntemi atfetme rektal bölgede ağrı, yani aşağıdaki gibi akıl sağlıklarını korumak istediğiniz herhangi programcı filtresi ekler.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ ... filters.Add(new AuthorizeAttribute()); } 

Şimdi sorun, bir kullanıcı yetkili ama hiçbir rolleri iddia vardır, onlar hala Zaten her yöntem için aşağıdaki sözdizimini kullanın beni zorlar, hangi yöntemleri erişebilmenizdir. Bu beni üzer. Ben bilmek istiyorum ne

[Authorize(Roles = "monkey,donkey")] 
public ActionResult Index() { return View(); } 

böyle bir küresel filtre ekleyerek ancak belirli roller için izin verme yoludur. Buraya kadarki en iyi yaklaşım, filtrenin bir özelliğini (sinsi olanı, çünkü yapıcı listesinde bunun hakkında hiçbir şey elde etmediği için) belirtmek ve aşağıdaki gibi tanımlamaktır.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ ... filters.Add(new AuthorizeAttribute { Roles = "monkey,donkey" }); } 
  1. bu önerilen bir yol veya daha güvenilir bir yaklaşım vardır mı?
  2. Filtreyi yalnızca belirli yöntemlere/denetleyicilere eklemek isteyip istemediğimi nasıl kontrol edebilirim?
  3. Belirli yöntemlere/denetleyicilere anonim erişime nasıl izin verebilirim?

    [Authorize] 
    public class BaseController : Controller 
    { 
    } 
    

    Sonra projenizde her kontrolör bu kontrolörün devralan olmalıdır: şeyler yapmanın

cevap

0

Benim yöntemim şöyle bir BaseController sahip olmaktır. Baz denetleyicinin içinde genellikle bazı yardımcı yöntemleri var. Bu izne sahip her kontrolör MonkeyController devraldığı sonra

[Authorize(Role = "monkey")] 
public class MonkeyController : BaseController 
{ 
} 

ve: sadece belirli roller erişimi olmalıdır alanlar için

Belirli bir denetleyici yok.

Anonim erişim için denetleyicilere veya eylemlere [AllowAnonymous] kullanın.

+0

Dosyayı ana denetleyiciyle nereye yerleştirdiğinizi merak ediyorum. Aynı klasördeki diğer denetleyicilerle birlikte yerleştirilmiş mi yoksa başka bir yere koyar mı? Başkalarının dosyaları nasıl düzenlediğini bilmek güzel. –

+0

Evet, genellikle diğer denetleyicilerle aynı klasörde temel denetleyicim var – trailmax

İlgili konular