Я пытаюсь реализовать очень базовую схему входа для моего сайта MVC3. Если я правильно понял, вместо добавления разметки [Авторизовать] для каждого из моих классов контроллеров, я должен был бы просто реализовать глобальные настройки. Для достижения этой цели, я добавил следующее в global.asax:глобальная авторизация не работает - результаты отображаются пустой страницей
protected void Application_Start()
{
RegisterGlobalFilters(GlobalFilters.Filters);
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
и в моем WebConfig, я добавил:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Результат является то, что в результате страница полностью пустая. Глядя на URL-адрес, кажется, что mvc перенаправляется на мой логин, как ожидалось, кроме страницы пустым. Если я комментирую код в global.asax и просто размещаю разметку [Авторизовать] прямо в каждом контоллере, он работает так, как ожидалось.
В качестве обходного пути я внедрил то, что я прочитал в качестве лучшей практики MVC2, которая должна была создать класс BaseController: Controller, добавить к нему разметку [Authorize], а затем изменить присущие мне все мои контроллеры, чтобы не попасть из BaseController вместо Controller.
Это, кажется, работает достаточно хорошо.
Но почему реализация global.asax не работает?
Спасибо Дарин, это, безусловно, очень ясно и помогает. Очень признателен. – NewJoizey
@NewJoizey, вам удалось заставить его работать? У вас еще есть вопросы по этому вопросу? –
Дарин, спасибо за продолжение. Я упомянул в оригинальной записи, что я получил эту работу, используя обходное решение MVC2, которое было достаточно хорошим на данный момент. Я не мог понять «почему» за наблюдаемым поведением, но вы объяснили это в разделе «Давайте посмотрим, что здесь происходит». Теперь, когда я это понимаю, я, вероятно, оставлю его в будущем рефакторе для реализации. – NewJoizey