通過學習我掌握了兩種控制方法,實現(xiàn)了對于網(wǎng)站的匿名訪問控制,一個是通過IIS實現(xiàn),另一個是通過asp.net實現(xiàn)。個人感覺兩種基本上可以實現(xiàn)的功能沒有什么差別,不過通過ASP.NET實現(xiàn)的更易于管理和維護。
對于通過IIS的實現(xiàn)都比較清楚,可以對文件夾或單個文件(頁面)設置訪問權(quán)限,IIS提供了“目錄安全性”和“文件安全性”的設置方法。并可以通過直接設置不同訪問人的權(quán)限。其中就提供了匿名訪問的控制方法,這里不再細說。
ASP.NET控制方法:
首先介紹例子實現(xiàn)的效果,一個網(wǎng)站登陸以后可以將用戶信息保存在一個cookie中,并標識用戶是通過身份驗證的,在訪問其他頁面的時候直接對用戶的身份是否通過驗證進行判斷,如果通過即可繼續(xù)訪問頁面,如果是一個未通過驗證的匿名訪問用戶(即未登錄用戶)則將跳轉(zhuǎn)到登陸頁面提示用戶登錄。設置其中一個用戶注冊頁面為可以匿名訪問,因為業(yè)務邏輯上只有允許注冊才能登陸。
在登陸頁面還是先對用戶的用戶名和密碼進行驗證,至于使用與數(shù)據(jù)庫比對的方法還是到AD中驗證等都可以,然后通過以下的方法將當前用戶在cookie中標識為通過驗證的用戶,并跳轉(zhuǎn)到用戶跳轉(zhuǎn)到登陸頁之前請求的頁面。
FormsAuthentication.RedirectFromLoginPage(userName,createPersistentCookie);
在用戶直接請求的頁面上我們使用如下的方法來驗證用戶。
Context.User.Identity.IsAuthenticated
Context:獲取與該頁關(guān)聯(lián)的 System.Web.HttpContext 對象
User:為當前 HTTP 請求獲取或設置安全信息
Identity:獲取當前用戶的標識
IsAuthenticated:獲取一個bool值,該值指示是否驗證了用戶
然后我們在Web.config中進行安全設置。
<authentication mode="Forms">
<forms loginUrl="Login.aspx"></forms>
</authentication>
"Forms" 您為用戶提供一個輸入憑據(jù)的自定義窗體(Web 頁),然后在您的應用程序中驗證他們的身份。用戶憑據(jù)標記存儲在 Cookie 中。
<authorization>
<deny users="?" />
</authorization>
deny表示禁止,users="?"表示匿名用戶
<location path="NewUser.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
表示新用戶注冊頁面NewUser.aspx,可以允許任何人訪問。
這樣就實現(xiàn)了對于匿名用戶的訪問控制。
例子: 下載http://bear-study-hard.VEVb.com/Files/Bear-Study-Hard/UserAuthentication.rar
http://bear-study-hard.VEVb.com/archive/2006/05/31/414134.html
新聞熱點
疑難解答