ASP Web配置安全访问问题

时间:2014-12-04 10:44:46

标签: asp.net web-config

我的网络配置的以下安全部分并不像我期望的那样。

我期望的是:默认为每个人都可以访问,他们尝试去的任何地方都会将其重定向到登录,只有这不会发生,我无法访问任何页面。< / p>

如果除了身份验证模式表格以及对BankDetails的限制之外我删除了所有内容,尝试访问其中的任何内容都会被阻止并带您重定向,但是阻止所有内容并允许访问不同部分更安全用户角色我相信。​​

我哪里错了?提前谢谢。

     <!-- security stuff -->
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx"/>
    </authentication>
  </system.web>
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
  <location path="~/Account/Login.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="~/Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="BankDetails">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

1 个答案:

答案 0 :(得分:0)

When evaluating rules, ASP.NET scans through the list from top to bottom. As soon as it finds an applicable rule, it stops its search.

考虑到这一点,您应该将规则更改为:

<system.web>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx"/>
</authentication>
</system.web>
 <location path="~/Default.aspx">
 <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
<location path="~/Account/Login.aspx">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
 </location>
<system.web>
  <authorization>
    <allow users="*"/>
    <deny users="?"/>
  </authorization>
</system.web>

没有必要为BankDetails明确添加一个,因为它将被最后一条规则<deny users="?"/>

捕获

修改 我将<allow users="*"/>添加到最后的全部