通過學(xué)習(xí)我掌握了兩種控制方法,實(shí)現(xiàn)了對(duì)于網(wǎng)站的匿名訪問控制,一個(gè)是通過iis實(shí)現(xiàn),另一個(gè)是通過asp.net實(shí)現(xiàn)。個(gè)人感覺兩種基本上可以實(shí)現(xiàn)的功能沒有什么差別,不過通過asp.net實(shí)現(xiàn)的更易于管理和維護(hù)。
對(duì)于通過iis的實(shí)現(xiàn)都比較清楚,可以對(duì)文件夾或單個(gè)文件(頁面)設(shè)置訪問權(quán)限,iis提供了“目錄安全性”和“文件安全性”的設(shè)置方法。并可以通過直接設(shè)置不同訪問人的權(quán)限。其中就提供了匿名訪問的控制方法,這里不再細(xì)說。
asp.net控制方法:
首先介紹例子實(shí)現(xiàn)的效果,一個(gè)網(wǎng)站登陸以后可以將用戶信息保存在一個(gè)cookie中,并標(biāo)識(shí)用戶是通過身份驗(yàn)證的,在訪問其他頁面的時(shí)候直接對(duì)用戶的身份是否通過驗(yàn)證進(jìn)行判斷,如果通過即可繼續(xù)訪問頁面,如果是一個(gè)未通過驗(yàn)證的匿名訪問用戶(即未登錄用戶)則將跳轉(zhuǎn)到登陸頁面提示用戶登錄。設(shè)置其中一個(gè)用戶注冊頁面為可以匿名訪問,因?yàn)闃I(yè)務(wù)邏輯上只有允許注冊才能登陸。
在登陸頁面還是先對(duì)用戶的用戶名和密碼進(jìn)行驗(yàn)證,至于使用與數(shù)據(jù)庫比對(duì)的方法還是到ad中驗(yàn)證等都可以,然后通過以下的方法將當(dāng)前用戶在cookie中標(biāo)識(shí)為通過驗(yàn)證的用戶,并跳轉(zhuǎn)到用戶跳轉(zhuǎn)到登陸頁之前請求的頁面。
formsauthentication.redirectfromloginpage(username,createpersistentcookie);
在用戶直接請求的頁面上我們使用如下的方法來驗(yàn)證用戶。
context.user.identity.isauthenticated
context:獲取與該頁關(guān)聯(lián)的 system.web.httpcontext 對(duì)象
user:為當(dāng)前 http 請求獲取或設(shè)置安全信息
identity:獲取當(dāng)前用戶的標(biāo)識(shí)
isauthenticated:獲取一個(gè)bool值,該值指示是否驗(yàn)證了用戶
然后我們在web.config中進(jìn)行安全設(shè)置。
<authentication mode="forms">
<forms loginurl="login.aspx"></forms>
</authentication>
"forms" 您為用戶提供一個(gè)輸入憑據(jù)的自定義窗體(web 頁),然后在您的應(yīng)用程序中驗(yàn)證他們的身份。用戶憑據(jù)標(biāo)記存儲(chǔ)在 cookie 中。
<authorization>
<deny users="?" />
</authorization>
deny表示禁止,users="?"表示匿名用戶
<location path="newuser.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
表示新用戶注冊頁面newuser.aspx,可以允許任何人訪問。這樣就實(shí)現(xiàn)了對(duì)于匿名用戶的訪問控制。
|
新聞熱點(diǎn)
疑難解答
圖片精選