我正在使用MVC3,ASP.NET4.5,C#和Razor。是否可以修飾類或動作以忽略全局屬性(如AuthorizeAttribute)?
我想設置一個屬性globlator即AuthorizeAttribute。不過,我需要確保某些類和/或操作忽略此全局設置。是否有可能裝飾一個類和/或行動來確保這一點,如果是的話如何?
非常感謝。
我正在使用MVC3,ASP.NET4.5,C#和Razor。是否可以修飾類或動作以忽略全局屬性(如AuthorizeAttribute)?
我想設置一個屬性globlator即AuthorizeAttribute。不過,我需要確保某些類和/或操作忽略此全局設置。是否有可能裝飾一個類和/或行動來確保這一點,如果是的話如何?
非常感謝。
可以使用[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()
{
}
}
謝謝你。我的意思是這個問題是關於如何從控制器和操作中排除屬性過濾器。我只是使用Authorize作爲例子。我遇到過濾提供商。現在就閱讀它。例如,我在這裏有一個anoter屬性,這裏稱爲「IsValidURLRequestAttribute」,即我想全局應用的[IsValidURLRequest],並且在所有不應使用的類或動作上有[IsValidURLRequest(false)]之類的東西。 – SamJolly
@SamJolly在這種情況下,最簡潔的方法是從抽象控制器派生您的控制器並覆蓋'On
[這個答案](http://stackoverflow.com/questions/746998/override-authorize-attribute-in-asp-net-mvc)可能有幫助 –
是的,這看起來非常有趣,謝謝。 – SamJolly