Я использую ActionFilterAttribute для выполнения пользовательской логики аутентификации. Атрибут будет использоваться только в производном классе Controller, который содержит мою логику аутентификации.
Вот мой контроллер, полученный из моего пользовательского класса контроллера, и пример атрибута:
public class MyController : CustomControllerBase
{
[CustomAuthorize(UserType = UserTypes.Admin)]
public ActionResult DoSomethingSecure()
{
return View();
}
}
Вот пример моего ActionFilterAttribute:
public class CustomAuthorizeAttribute : ActionFilterAttribute
{
public MyUserTypes UserType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
myUser user = ((CustomControllerBase)filterContext.Controller).User;
if(!user.isAuthenticated)
{
filterContext.RequestContext.HttpContext.Response.StatusCode = 401;
}
}
}
Отлично работает.
Вот вопрос: Могу ли я требовать, чтобы этот атрибут использовался ТОЛЬКО в Действиях в моем пользовательском типе контроллера?