透過學習我掌握了兩種控制方法,實現了對於網站的匿名存取控制,一個是透過IIS實現,另一個是透過ASP.NET實現。個人感覺兩種基本上可以實現的功能沒有什麼差別,不過透過ASP.NET實現的更易於管理和維護。
對於透過IIS的實作都比較清楚,可以對資料夾或單一檔案(頁面)設定存取權限,IIS提供了「目錄安全性」和「檔案安全性」的設定方法。並且可以透過直接設定不同存取人的權限。其中就提供了匿名存取的控制方法,這裡不再細說。
ASP.NET控制方法:
首先介紹例子實現的效果,一個網站登陸以後可以將使用者資訊保存在一個cookie中,並標識使用者是透過身份驗證的,在訪問其他頁面的時候直接對使用者的身份是否通過驗證進行判斷,如果通過即可繼續訪問頁面,如果是一個未通過驗證的匿名訪問用戶(即未登入用戶)則將跳到登陸頁面提示用戶登入。設定其中一個使用者註冊頁面為可以匿名訪問,因為業務邏輯上只有允許註冊才能登陸。
在登陸頁面還是先對用戶的用戶名和密碼進行驗證,至於使用與數據庫比對的方法還是到AD中驗證等都可以,然後通過以下的方法將當前用戶在cookie中標識為通過驗證的用戶,並跳到使用者跳到登陸頁之前請求的頁面。
FormsAuthentication.RedirectFromLoginPage(userName,createPersistentCookie);
在使用者直接要求的頁面上我們使用如下的方法來驗證使用者。
Context.User.Identity.IsAuthenticated
Context:取得與該頁關聯的System.Web.HttpContext 物件
User:為目前HTTP 請求取得或設定安全資訊
Identity:取得目前使用者的識別
IsAuthenticated:取得一個bool值,該值指示是否驗證了用戶
然後我們在Web.config中進行安全設定。
<authentication mode="Forms">
<forms loginUrl="Login.aspx"></forms>
</authentication>
"Forms" 您為使用者提供一個輸入憑證的自訂窗體(Web 頁),然後在您的應用程式中驗證他們的身份。使用者憑證標記儲存在Cookie 中。
<authorization>
<deny users="?" />
</authorization>
deny表示禁止,users="?"表示匿名使用者
<location path="NewUser.aspx">
<system.web>
<authorization>
<allow users= "*" />
</authorization>
</system.web>
</location>
表示新使用者註冊頁面NewUser.aspx,可以允許任何人存取。
這樣就實現了對於匿名使用者的存取控制。
範例: 下載http://bear-study-hard.cnblogs.com/archive/2006/05/31/414134.html