У меня есть настраиваемая аутентификация, так что пользователь хранится как переменная сеанса. После того, как они проходят через процесс счета/Войти хранить детали, возвращаемые из 3 партии API как пользователь в сессии, как это:Пользовательская аутентификация в MVC
Session["User"] = new UserViewModel(result);
Я хочу, чтобы проверить пользователя присутствует перед каждым действием контроллера, так что я есть сделал BaseController со следующей проверки в нем:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Session["User"] != null)
base.OnActionExecuting(filterContext);
else
filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { action = "LogIn", controller = "Account" }));
Каждый из контроллеров, то наследующий от BaseController так, что он перенаправляет на страницу войти, если нет ни одного пользователя. Я не наследую от BaseController для AccountController, чтобы он не попадал в бесконечный цикл проверки и перенаправления, но я также хочу, чтобы определенные страницы не проверяли вход в систему. Есть ли способ сделать это, т.е. написать правило исключения так же, как у вас может быть [AllowAnonymous]?
Почему бы не создать настраиваемый атрибут Authorize и применить его только к контроллерам, которым вы хотите выполнить эту проверку? – Alex
Заменить атрибут авторизации вместо ActionFilters –