以前用ASP,PHP,JSP編寫網站代碼的時候,站點安全性總是一件頭疼的事情,雖然我們編寫了用戶登錄,注冊,驗證頁面,但是效果總是不理想。有時候我們不得不用大量的session變量來存放相關信息,處處設防。而在.NET環境下,這個問題處理起來就非常容易了。關鍵是要充分理解web.config文件。首先,介紹一下web.config文件。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web>
<!-- 動態調試編譯 設置 compilation debug="true" 以將調試符號(.pdb 信息) 插入到編譯頁中。因為這將創建執行起來 較慢的大文件,所以應該只在調試時將該值設置為 true,而所有其他時候都設置為 false。有關更多信息,請參考有關 調試 ASP.NET 文件的文檔。 --> <compilation defaultLanguage="vb" debug="true" />
<!-- 自定義錯誤信息 設置 customErrors mode="On" 或 "RemoteOnly"
以啟用自定義錯誤信息,或設置為 "Off" 以禁用自定義錯誤信息。 為每個要處理的錯誤添加 <error> 標記。 --> <customErrors mode="RemoteOnly" />
<!-- 身份驗證 此節設置應用程序的身份驗證策略??赡艿哪J绞?\“Windows\”、 \“Forms\”、\“Passport\”和 \“None\” --> <authentication mode="Windows" />
<!-- 授權 此節設置應用程序的授權策略??梢栽试S或拒絕用戶或角色訪問 應用程序資源。通配符:"*" 表示任何人,"?" 表示匿名 (未授權的)用戶。 --> <authorization> <allow users="*" /> <!-- 允許所有用戶 -->
<!-- <allow users="[逗號分隔的用戶列表]" roles="[逗號分隔的角色列表]"/> <deny users="[逗號分隔的用戶列表]" roles="[逗號分隔的角色列表]"/> --> </authorization>
<!-- 應用程序級別跟蹤記錄 應用程序級別跟蹤在應用程序內為每一頁啟用跟蹤日志輸出。 設置 trace enabled="true" 以啟用應用程序跟蹤記錄。如果 pageOutput="true",則 跟蹤信息將顯示在每一頁的底部。否則,可以通過從 Web 應用程序 根瀏覽 "trace.axd" 頁來查看 應用程序跟蹤日志。 --> <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<!-- 會話狀態設置 默認情況下,ASP.NET 使用 cookie 標識哪些請求屬于特定的會話。 如果 cookie 不可用,則可以通過將會話標識符添加到 URL 來跟蹤會話。 若要禁用 cookie,請設置 sessionState cookieless="true"。 --> <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20" /> <!-- 全球化 此節設置應用程序的全球化設置。 --> <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>
|
好了,相信看過上面的介紹以后,對web.config文件一定非常了解了吧。下面我們就切入主題。為了防止用戶沒有經過驗證就訪問站點,我們的處理方法是當用戶沒有通過驗證的時候點擊任何頁面將會直接跳到Login.aspx頁面,具體代碼如下:
<authentication mode="Forms"> <forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" /> </authentication> <authorization> <deny users="?" /> </authorization>
|
但是這樣會產生一個問題,那就是如果我的站點有一些信息是可以讓任意用戶隨意訪問的,比如站點簡介,使用說明等。如果按照上面的處理方法豈不讓用戶覺得很麻煩,呵呵,不急,在ASP.NET中自然有相應的解決辦法。下面的代碼可以實現匿名用戶訪問Test.aspx頁面:
<location path="test.aspx"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location>
|