2011-08-18 12 views
9

Bir Yetkilendirme özniteliği olan bir denetleyici sınıfında bir eylemde [Yetkilendir] yetkisinin göz ardı edilmesinin bir yolu yok sayılır mı?Bir denetleyici sınıfına ve aynı anda eyleme geçmek için AuthorizeAttribute Uygula

 [Authorize] 
     public class MyController : Controller 
     { 
      [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly, 
      public ActionResult PublicMethod() 
      { 
      //some code 
      } 

      public ActionResult PrivateMethod() 
      { 
      //some code 
      } 
     } 

Sadece PrivateMethod() kimlik doğrulaması gerektirmeli, ancak gerekli de.

Not: Özel yetkilendirme filtresini yapmak istemem.

[] 'in

+1

için sınıf MyController üzerindedir Yetkilendir'i görmezden çalışıyorsun eylem PublicMethod veya PrivateMethod? – itsmatt

+0

PublicMethod eylemi için göz ardı etmek. Yanlış bir şey yazdım, üzgünüm, şimdi düzeltildi! –

cevap

4

imkansız Varsayılan olarak - Eğer denetleyicisi için [Yetkilendir'i] ayarlarsanız daha sonra sadece eylem erişebilir kullanıcı kimlik doğrulaması.

veya

Sen özel kararlar deneyebilirsiniz

: stackoverflow.

3

bir çözüm bu yazıda şudur: Bir AllowAnonymous özel ayrıntı ile eylemleri süslemeleri beyaz liste yaklaşımı hakkında Securing your ASP.NET MVC 3 Application

makale konuşur. AllowAnonymous işlemlerinin yetkilendirme kontrollerini atlamak için AuthorizeAttribute ve OnAuthorization yöntemini genişletmenizi gerektirir. (Yaklaşım Levi, MVC takımda bir güvenlik uzmanı yansıtılır.)

16

Bunu [AllowAnonymous]

[Authorize] 
public class MyController : Controller 
{ 
    [AllowAnonymous] 
    public ActionResult PublicMethod() 
    { 
      //some code 
    } 

    public ActionResult PrivateMethod() 
    { 
      //some code 
    } 
    } 
0
kullanabilirsiniz
public class MyController : Controller 
    { 
     [Authorize] //it will only work for the following action 
     public ActionResult PublicMethod() 
     { 
     //some code 
     } 

     public ActionResult PrivateMethod() //[Authorize] will not work for this action 
     { 
     //some code 
     } 
    } 
+0

Cevabınızı açıklamak için bazı kelimeler eklemeyi deneyin. Sadece kodun cevapları normalde daha az yardımcı olur. – Matt

İlgili konular