HandleUnauthorizedRequest не переопределяет
В моем приложении asp.net mvc3 у меня есть собственный атрибут авторизации, как показано ниже.
public class CustomAuthorize : AuthorizeAttribute
{
public IAccountRepository AccountRepository { get; set; }
public CustomAuthorize()
{
this.AccountRepository = new UserModel();
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
base.AuthorizeCore(httpContext);
return AccountRepository.isEnabled(HttpContext.Current.User.Identity.Name);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
}
у меня есть[CustomAuthorize]
пометить мои действия контроллера, аAuthorizeCore
Метод работает нормально - он выполняет логику, которую я хочу (чтобы убедиться, что учетная запись действительно включена), а затем возвращается как таковой.
Тем не менее, переопределеныHandleUnauthorizedRequest
метод, который, как я понимаю, должен позволять мне контролировать поведение неавторизованного запроса, вообще не работает. Я поставил точку останова, вставил туда код, я получил доступ к своему приложению неавторизованно, и код никогда не запускался.
Что мне не хватает?
РЕДАКТИРОВАТЬ: Я провел еще несколько исследований и нашел несколько других людей, которые имели эту проблему, но, к сожалению, не нашли решения.
EDIT2: образец кода
[CustomAuthorize]
public class UserController: Controller
{
public UserController()
{
//do stuff here
}
}
РЕДАКТИРОВАТЬ 3: @Fabio
Вот то, что я пытаюсь сделать. У меня есть страница входа в систему (формы auth), которая работает нормально - она вызывает мой пользовательский логин, а затем вызывает мой переопределение AuthorizeCore. Мое приложение использует большое количество вызовов AJAX, и моя конечная цель заключается в том, чтобы каждый раз, когда пользователь использует приложение, и администратор отключает их, делая AJAX-вызов после отключения (хотя все еще вошедшего в систему), чтобы выйти из системы. Однако, чтобы сделать это, я хочу вернуть пользовательский ответ, если пользователь делает вызов ajax, и для этого мне нужно переопределить HandleUnauthorizedRequest. Но мое Authorize Core (и, соответственно, HandleUnauthorizedRequest) игнорируются, если пользователь вошел в систему (несмотря на то, что у меня есть обычные теги для всех моих действий контроллера, которые вызывает ajax).
Короче говоря: я хочу авторизовать пользователя на каждый запрос, а не только на запрос на вход в систему (что, похоже, и делает сейчас поставщик членства)