不論是開放web網站,還是B/S應用程式,我們都需要對我們程式的部分資源進行保護,不被不速之客訪問,要想訪問受限資源,將會重新導向到登入頁面,要求輸入帳號,為實現上面的要求,我們通常會這樣配置:
<authentication mode="Forms">
<forms name=".ASPXAUTH " loginUrl="login.aspx" protection="All" timeout="120"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
(各個屬性的含義,msdn有詳細描述),這樣,應用程式下所有的頁面都將收到保護,但是我們大多數情況下只有求保護某些資源,而另一部分資源將是完全開放的(在門戶網站中常常是這樣的),我們把受保護的資源放在某個目錄下,例如admin。
我們只需設定system.web配置節如下即可:
<authentication mode="Forms">
<forms name=".ASPXADMINUSER" loginUrl="admin/adminlogin.aspx" protection="All" timeout="20" path="/" />
</authentication>
<authorization>
<allow users="?" />
</authorization>
再在
configuration配置節下如下:
<location allowOverride="false" />
<location path="admin">
<system.web>
<authorization>
<allow users="admin"></allow>
<deny users="*"></deny>
</authorization>
</system.web>
</location>
這樣admin目錄下的所有頁面將受到保護,注意ASP.NET對html檔案不作保護。
問題來了,如果admin下大部分頁面開放,只對list.aspx保護怎麼辦。我們可以修改
<location path="admin">為
<location path="admin/list.aspx">
按如上所述配置,將可以保護任意指定的資源,各配置屬性在msdn中有說明,這裡浪費時間了。