【问题标题】:Does order of <location> in web.config matters?web.config 中 <location> 的顺序是否重要?
【发布时间】:2012-03-09 13:21:05
【问题描述】:

我已经为我的网站设置了 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 <

【问题讨论】:

    标签: c# asp.net web-config forms-authentication


    【解决方案1】:

    您的根设置拒绝所有未经身份验证的用户 (?),您的位置设置拒绝所有用户 (*)。

    你可能打算这样做:

    <!-- web application root settings -->
    <authorization>
       <deny users ="?" />
    </authorization>
    
    <!-- login and static resources -->
    <location path="~/Images">
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
    </location>
    

    【讨论】:

    • 它没有帮助。我想允许非授权用户获取登录页面上的所有相关内容(js、css、图像)。编写配置后,我仍然没有得到 Imgaes 和脚本。
    • 我之前从 Visual Studio 运行时看到过,但部署到 IIS 时它仍然可以工作。
    • 问题出在~。我认为它更清楚,但它失败了相对路径
    【解决方案2】:

    顺序确实很重要,如果您有重复的元素,则只会考虑最后一个元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 2010-11-22
      • 2017-05-21
      • 2015-04-05
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多