2014-06-06 43 views
0

我正在使用MVC3,ASP.NET4.5,C#和Razor。是否可以修飾類或動作以忽略全局屬性(如AuthorizeAttribute)?

我想設置一個屬性globlator即AuthorizeAttribute。不過,我需要確保某些類和/或操作忽略此全局設置。是否有可能裝飾一個類和/或行動來確保這一點,如果是的話如何?

非常感謝。

+1

[這個答案](http://stackoverflow.com/questions/746998/override-authorize-attribute-in-asp-net-mvc)可能有幫助 –

+0

是的,這看起來非常有趣,謝謝。 – SamJolly

回答

1

可以使用[AllowAnonymous]屬性(這是在ASP.NET MVC默認設置)來覆蓋你的[Authorize]屬性

假設你已經添加自定義的授權邏輯到默認FilterConfig類:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new MyCustomAuthorizationAttribute()); 
    } 
} 

您可以用[AllowAnonymous]裝飾您的控制器/操作方法來覆蓋該設置:

// To allow anonymous access to all action methods 
[AllowAnonymous] 
public class MyController : Controller 
{ 
    // Only allow the Index action method to be called anonymously 
    [AllowAnonymous] 
    public ActionResult Index() 
    { 
    } 
} 
+0

謝謝你。我的意思是這個問題是關於如何從控制器和操作中排除屬性過濾器。我只是使用Authorize作爲例子。我遇到過濾提供商。現在就閱讀它。例如,我在這裏有一個anoter屬性,這裏稱爲「IsValidURLRequestAttribute」,即我想全局應用的[IsValidURLRequest],並且在所有不應使用的類或動作上有[IsValidURLRequest(false)]之類的東西。 – SamJolly

+2

@SamJolly在這種情況下,最簡潔的方法是從抽象控制器派生您的控制器並覆蓋'On '方法。您可以閱讀[ASP.NET MVC中的篩選](http://msdn.microsoft.com/zh-cn/library/gg416513(vs.98).aspx) – rexcfnghk

相關問題