Атрибут авторизации в HomeController заставляет войти в систему на контроллере AllowAnonymous

HomeController моего приложения mvc 5 имеет атрибут [Authorize].

[Authorize]
public class HomeController : Controller

SimpleController выглядит следующим образом (простой тест):

[AllowAnonymous]
public class SimpleController : Controller
{
    // GET: Simple
    public ActionResult Index()
    {
        return View();
    }
}

Почему мне нужно входить в систему, когда я сразу перехожу на http://url/simple/index?

Мне нужно дополнительно «принудительно ввести код аутентификации» или зарегистрировать фильтры.

Когда я удаляю [Авторизацию] на HomeController, SimpleController работает нормально, без необходимости входа в систему


person Filip    schedule 20.11.2015    source источник
comment
Требование авторизации на одном контроллере никак не связано с другим. Однако [AllowAnonymous] требуется только в том случае, если вы также добавили [Authorize]. Если контроллер или действие не требуют аутентификации, удалите атрибут [AllowAnonymous].   -  person Chris Pratt    schedule 20.11.2015
comment
Я знаю, но странно то, что когда я удаляю [Авторизацию] на HomeController, SimpleController работает нормально, без необходимости входа в систему.   -  person Filip    schedule 20.11.2015
comment
Есть ли у вас какие-либо дочерние действия в HomeController, которые вы вызываете в представлениях для SimpleController? Все дочерние действия либо не должны иметь [Authorize], либо, если они находятся в контроллере, украшенном [Authorize], должны быть украшены [AllowAnonymous]. Никакие дочерние действия никогда не должны требовать авторизации. Он всегда должен быть необязательным.   -  person Chris Pratt    schedule 20.11.2015
comment
нет, представление простого контроллера, оно почти пустое, просто тег h1 и тег p для отображения текста   -  person Filip    schedule 20.11.2015
comment
В схеме ничего нет?   -  person Chris Pratt    schedule 20.11.2015
comment
нет, я также использую базовую компоновку для этого тестового контроллера, чтобы исключить, что компоновка является причиной   -  person Filip    schedule 20.11.2015
comment
Не знаю, что тебе сказать тогда. Контроллеры полностью разделены. Если вы каким-то образом не действуете HomeController из SimpleController (дочернее действие и т. д.), HomeController никогда даже не будет создан экземпляр, не говоря уже о том, чтобы заставить его требовать авторизации на SimpleController. Что-то еще происходит, не охваченное вашим вопросом.   -  person Chris Pratt    schedule 20.11.2015


Ответы (1)


Возможно, вы настроили фильтр глобальной авторизации в FilterConfig.cs, расположенном в папке App_Start.

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizeAttribute());
    }
}
person Julius Depulla    schedule 20.11.2015