Имеет ли значение порядок <location>в web.config? - PullRequest
1 голос
/ 09 марта 2012

Я установил FormAuthentication для моего сайта.

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

Я добавил в 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 <

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

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

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

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

<!-- login and static resources -->
<location path="~/Images">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
0 голосов
/ 09 марта 2012

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

...