2011-08-10 32 views
8

Authorize özniteliğini kullanma Kaynaklara erişmesine izin verilen rolleri belirtebilirim. ben deASP.NET Yetkilendirme ve Yönetici kullanıcı rolü

[Authorize(Roles="User, Administrator")] 

bu birini belirtmek gereken herhangi bir kaynağa gitmek için izin verilir yönetici kullanıcı var Ama olabilir eğer

[Authorize(Roles="User")] 

Ama bu yönetici izin ı nasılsa söyleyebiliriz bir yol var mı Bir yere git ve bunu Authorize özniteliğinde belirtmemek?

Yani ben o yönetici rolü de oraya gitmek için izin anlamına gelir bu [Authorize(Roles="User")] olurdu (kumanda veya eylem üzerinde ) kodu eğer bir yere gelir.

Ya da uygulamanın ne zaman başladığını tüm Yetkilendirme rollerine dinamik olarak ayarlayabilir miyim?

Herhangi bir fikrin var mı?

GÜNCELLEME: bu yüzden ben daha iyi bir çözüm bulamadık sanki orada da "Administrator" eklemeniz gerekecektir Yetki [Authorize(Role="Administrator")] bağlıyor ve ben nitelikler [Authorize(Role="User")] bazı başka kontrolörleri bazı eylemler var olan

Şu i bir yönetici denetleyiciniz .

+0

benim herhangi bir yardımım mıydı? – LeftyX

cevap

2

Bunun sizin için çalışacağını düşünüyorum. AuthorizeAttribute ile kendi temel denetleyicinizi oluşturun, sonra diğer Denetleyicilerinizin temel sınıfınızı devralmasını sağlayın.

[Authorize(Roles="Admin")] 
public class MyFancyController : Controller 
{ 
} 

[Authorize(Roles = "TaxPayer")] 
public class WizardController : MyFancyController 
{ 
... 

Bu bana göre korkutucu.

Kaç adet denetleyiciniz var? Bunu daha sonra unutursanız ve belki de Yöneticilerin erişmesini istemediğiniz bir sayfanız varsa ne olur?

Kodda hata ayıklama işlemi zorlaşır mı?

+0

Ben bir yere yönetici erişimi istemiyorum eğer iyi bir nokta bence. Soru güncellendi – Joper

1

Özel bir filtre oluşturabilir ve bunu Eylemler veya Denetleyicilerinizle süslemek için kullanabilirsiniz. "Yönetici" olduğundan emin kullanıcıları olun: here

2
[Authorize(Roles = "User, Admin")] 
public class PrestamosController : Controller 
{ 
    // controller details 
} 
+0

Gönderdiğiniz kodu açıkladıysanız daha da iyi olurdu. –

0

Bu benim ne olduğunu

public class AuthorizationAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
      { 
      filterContext.Result = new HttpUnauthorizedResult(); 
      return; 
     } 

     var actionName = filterContext.ActionDescriptor.ActionName; 
     var controllerName = filterContext.Controller.GetType().Name; 

     bool isAuthorized =false; 

     // Put your logic here !!!! 

     if (!isAuthorized) { 
      filterContext.Result = new HttpUnauthorizedResult();   
      return; 
     } 
    } 
} 

Biraz daha okuyabilirsiniz: Bu benim oldukça çok kullandım basit bir yapıdır rol ayrıca "Kullanıcı" rolündedir.

0

Sen Statik Rolü ve Runtime Rolü kavramını gerekir.| Yönetici:

Rolünüz listesi ve bunların seviyeleri:

  • Rolü İşte basit bir örnek Düzey: 1
  • Rol: Editör | Seviye: 2
  • Rol: Görüntüleyici | Seviye: 3

Kullanıcılar ve onların Statik Rol (Statik Rolü kullanıcılara atanan rol):

  • Kullanıcı: John | Rol: Yönetici
  • Kullanıcı: Sam | Rol: Düzenleyici
  • Kullanıcı: Peter | Gör:

Çalışma zamanında, Statik Rol ve Rol Seviyeleri kullanarak bir Çalışma Süresi Rolü oluşturursunuz, üst düzey rollere sahip kullanıcılar otomatik olarak rolleri daha düşük seviyelerde elde ederler. Bu nedenle, hesaplama sonrasında, bu Kullanıcılar için Çalışma Zamanı Rolleri:

  • Kullanıcı: John | Rol: Yönetici, Editör, Görüntüleyici
  • Kullanıcı: Sam | Rol: Düzenleyici, Görüntüleyici
  • Kullanıcı: Peter | Rol: Görüntüleyici

Ve sonra, sadece kullanabilirsiniz [Yetkilendirme (Rolleri = "Görüntüleyici")], izinler (örneğin, Can Sam) yüksek seviye olan kullanıcılar da buna erişebilir. Çünkü onlar da çalışma zamanında Görüntüleyici rolüne sahip olmalıdır.

Statik Rol ve Çalışma Süresi Rolü kullanmanın amacı, Statik Rolün rol atamasını daha kolay yapmasıdır. Çalışma zamanı rolü, kaynak yetkilendirmesini kolaylaştırır.

İlgili konular