2015-09-08 3 views
2

У меня есть интернет-сайт ASP.NET, который я хочу защитить через проверку подлинности Windows. Я установил мой файл web.config как:Пользовательская страница 401 в IIS с ASP.NET

<system.web> 
<authentication mode="Windows" /> 
<authorization> 
    <allow users="*"/> 
    <deny users="?"/>   
</authorization> 

Я затем отключить анонимный доступ и включена проверка подлинности Windows в IIS 7.5.

Это приводит к отображению окна подсказки для моих учетных данных Windows, однако нажатие «Отмена» дает мне стандартную страницу ошибок 401. Я хотел бы, чтобы отобразить статический файл HTML вместо этого сообщения, однако я не мог заставить его работать, и я попытался комбинацию различных параметров, таких как:

<httpErrors errorMode="Custom" existingResponse="Replace" lockAllAttributesExcept="errorMode"> <error statusCode="401" prefixLanguageFilePath="c:\inetpub\custerr" path="MyCustom401.htm" /> </httpErrors> 

и

<customErrors mode="Off" defaultRedirect="ErrorPage.aspx"> 
    <error statusCode="401" redirect="MyCustom401.aspx" /> 
</customErrors> 

Я бы хотел, чтобы каждый, кто вводил правильные учетные данные Windows, мог нести на веб-сайт как обычно, но с недопустимыми или подробными сведениями, чтобы просмотреть пользовательскую HTML-страницу.

Может ли кто-нибудь указать мне правильное направление?

Спасибо!

+0

Web-браузеры обычно показывают свои версии страниц ошибок, так что вы действительно хотите изменить те IIS? –

+0

Я хочу показать пользовательскую страницу пользователю, который даст инструкции о том, как они могут получить доступ к действительным учетным данным, чтобы иметь возможность входа на веб-сайт. Поэтому да, я хочу, чтобы можно было переопределить страницу ошибки, которую они видят. – ca8msm

+1

Это просто невозможно, так как настройка веб-браузера имеет наивысший приоритет. Вам нужно будет перенаправить на определенную страницу и вернуть код ответа 200 вместо 401. –

ответ

1

Необходимо убедиться, что вы разрешаете анонимным пользователям доступ к пути, в котором содержатся файлы ошибок, в противном случае они не получат страницу с ошибкой. Например, вот файл конфигурации, который должен дать вам предполагаемые результаты, если ваши файлы ошибок находятся в каталоге (ошибки). Сначала он отключает анонимный доступ для всех страниц сайта, а затем открывает его для папки «ошибки»:

<configuration> 
    <system.webServer> 
     <security> 
      <authorization> 
       <add accessType="Deny" users="?" /> 
      </authorization> 
     </security> 
     <httpErrors errorMode="Custom"> 
      <error statusCode="401" subStatusCode="2" path="/errors/unauthorized.aspx" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 

    <location path="errors"> 
     <system.webServer> 
      <security> 
       <authorization> 
        <clear /> 
        <add accessType="Allow" users="*" /> 
       </authorization> 
      </security> 
     </system.webServer> 
    </location> 
</configuration>