customerrors для 401,2 в ASP.NET

Я успешно реализовал основанную на роли авторизацию в ASP.NET. Когда у человека нет необходимой роли, он добирается для наблюдения ошибочной страницы для 401,2 не авторизованный.

Что я хотел бы выполнить, теперь должен иметь пользовательскую 401 страницу в моем приложении и перенаправлять его там через настройки в web.config. Я попробовал это:

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
    <error statusCode="401" redirect="NoAccess.htm" />
</customErrors>

Но это не становится пойманным. Я должен переопределить его в IIS вместо этого? Я надеюсь не как, который сделал бы получение вещей развернутым тяжелее.

9
задан Nyla Pareska 13 January 2010 в 13:47
поделиться

1 ответ

Недавно я столкнулся с этой же проблемой, и оказалось, что это одна из загадок при использовании аутентификации Windows.

Некоторое время назад Джошуа Флэнаган создал хороший HttpModule, который будет уважать раздел customErrors в вашем web.config и перенаправит вас на страницу 401 ошибки.

Ключом к решению является перехват события EndRequest жизненного цикла страницы, проверка кода состояния 401, а затем выполнение пользовательской страницы.

Портативность HttpModule хороша, потому что она делает решение многоразовым и сохраняет ваш Global.asax чистым, но ничто не мешает вам подключить событие EndRequest в Global.asax с его кодом, если вы действительно этого хотите.

Если вы используете ASP.NET MVC, решение не так элегантно.

7
ответ дан 4 December 2019 в 11:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: