Имеет ли значение порядок ‹location› в web.config?

Я установил FormAuthentication на свой сайт.

Я хочу разрешить анонимный доступ к странице входа и ее ресурсам (js, css, изображениям).

Я добавил в web.config. Порядок там имеет значение?

<configuration>
  <configSections>
    <section name="hibernate-configuration"  
             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
    <section name="log4net" 
             type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <location path="~/Authentication.htm">
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="~/Resources">
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="~/js">
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="~/Images">
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="~/Controllers">
    <system.web>
      <authorization>
         <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        .....
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms name="Login" loginUrl="~/Authentication.htm"
             protection="All" path="/" timeout="30" />
    </authentication>
    <authorization>
       <deny users ="?" />
       <allow users = "*" />
    </authorization>

Почему я все еще получаю ошибки аутентификации для пути, который я добавил в ?

Authentication.htm?ReturnUrl=%2fResources%2fScripts%2fjquery-1.7.1.min.js:1Uncaught SyntaxError: Unexpected token <

Authentication.htm?ReturnUrl=%2fjs%2fCommon.js:1Uncaught SyntaxError: Unexpected token <

Authentication.htm?ReturnUrl=%2fjs%2fAuthentication.js:1Uncaught SyntaxError: Unexpected token <

person Elad Benda2    schedule 09.03.2012    source источник


Ответы (2)


Ваши корневые настройки запрещают доступ всем пользователям, не прошедшим проверку подлинности (?), а настройки вашего местоположения запрещают доступ всем пользователям (*).

Вы, вероятно, хотели сделать это:

<!-- web application root settings -->
<authorization>
   <deny users ="?" />
</authorization>

<!-- login and static resources -->
<location path="~/Images">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
person jrummell    schedule 09.03.2012
comment
Это не помогло. Я хочу разрешить неавторизованному пользователю получать весь соответствующий контент на странице входа (js, css, изображения). После написания вашей конфигурации я все еще не получаю Imgaes и скрипты. - person Elad Benda2; 10.03.2012
comment
Я видел это раньше при запуске из Visual Studio, но он все равно будет работать при развертывании в IIS. - person jrummell; 10.03.2012
comment
Проблема была в ~. Я думал, что с этим было понятнее, но относительный путь не удался. - person Elad Benda2; 10.03.2012

Порядок имеет значение, если у вас есть повторяющиеся элементы, будет учитываться только последний элемент.

person Khan    schedule 09.03.2012