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
    }
}

EDIT 3: @Fabio

Вот что я пытаюсь сделать. У меня есть страница входа (аутентификация форм), которая работает нормально — она вызывает мой собственный логин, а затем вызывает переопределение AuthorizeCore. Мое приложение использует большое количество вызовов ajax, и моя конечная цель заключается в том, чтобы всякий раз, когда пользователь использует приложение, а администратор отключает их, выполнение вызова ajax после отключения (хотя все еще вход в систему) должен выйти из них. Однако для этого я хочу вернуть собственный ответ, если пользователь делает вызов ajax, и для этого мне нужно переопределить HandleUnauthorizedRequest.Но мое ядро ​​авторизации (и по расширению HandleUnauthorizedRequest) игнорируется, если пользователь вошел в систему (несмотря на тот факт, что у меня есть теги customauthorize для всех действий моего контроллера, которые вызывает ajax).

Вкратце: я хочу авторизовать пользователя при каждом запросе, а не только при входе в систему (что, похоже, сейчас делает провайдер членства)

11
задан Mansfield 19 June 2012 в 15:53
поделиться