2014-12-04 71 views
0

下面我的网络配置的安全性部分不表现为我所期望的。ASP WebConfig安全访问问题

我会期待什么:默认为向所有人,任何地方比他们试图去把他们重定向到登录,只有这个是不会发生的,我不能够访问任何网页。

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

我哪里错了?提前致谢。

 <!-- 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> 

回答

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="*"/>到最终捕获所有

+0

感谢您的答复,但它仍然无法正常工作,这绝对是与最终授权拒绝,因为它的工作原理,如果这是不存在的,只是有很多清洁,如果我可以允许访问某些而不是手动阻止几乎所有的东西。 – SelrekJohn 2014-12-04 11:22:17