Да, это возможно, используя базовый класс контроллеров, который наследуют все ваши контроллеры, или создав пользовательский атрибут, которым вы украшаете свой контроллер.
Базовый контроллер:
public class BaseController : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
// verify logic here
}
}
Вашконтроллеры:
public class AccountController : BaseController
{
// the Initialize() function will get called for every request
// thus running the verify logic
}
Настраиваемый атрибут авторизации:
public class AuthorizeAccountNumberAttribute : AuthorizationAttribute
{
protected override AuthorizationResult IsAuthorized(System.Security.Principal.IPrincipal principal, AuthorizationContext authorizationContext)
{
// verify logic here
}
}
На вашем контроллере (ах):
[AuthorizeAccountNumber]
public class AccountController : Controller
{
// the IsAuthorized() function in the AuthorizeAccountNumber will
// get called for every request and thus the verify logic
}
Вы можете комбинировать оба подхода для создания другой настраиваемой базыкласс контроллера, украшенный [AuthorizeAccountNumber]
, от которого наследуются ваши контроллеры, требующие проверки.