簡介
asp開發人員總是自己解決認證問題,但asp.net已經支持內置的認證功能。在本篇文章中,我們將介紹如何這二者在認證方面有什么變化,如何用很少的代碼使用formsauthentication使用網站更安全。
在asp編程中,無論是使用集成的安全協議(例如windows nt lan manager [ntlm]的尋問/應答認證協議),基本的安全協議(指純文本)還是自己創建的安全協議,其工作量都是十分驚人的。表格認證使開發人員能夠在web.config文件中存儲用戶名、口令等認證信息,當然,也可以使用你自己原來的方法,例如數據庫、xml文件或文本文件。使用表格認證最大的好處是它可以使我們無需再通過編程實現狀態跟蹤,這一部分工作由asp.net代勞了。
表格認證使用cookies使應用程序在用戶訪問期間對用戶進行跟蹤,asp.net處理表格認證的方法與在asp中使用的方式非常相似。當用戶通過表格認證登錄后,就會創建一個用來跟蹤用戶訪問網站期間活動的cookie。如果用戶請求一個安全的網頁,但又沒有登錄,用戶就會被引導到登錄網頁。一旦用戶通過認證,就會被引導到原來請求的頁面。
web.config文件包含asp.net應用程序的所有配置設置,其理念是讓許多開發人員共同控制web應用程序,而不是由系統管理員一個人來控制。當然了,web.config中有很多的選項,但今天我們只介紹與表格認證有關的選項。
在上面的web.config中,我們配置了幾個選項。
配置小節的mode屬性設置表格的認證模式,在
需要記住的是,如果在計算機上有多個應用,建議為每個cookie命名一個名字。
接下來,我們將path屬性設置為應用的根目錄,將loginurl屬性設置為本地機上一個名字為loginurl.aspx的網頁,當然我們也可以使用https://secured.sumnurv.com這樣的url,將protection屬性設置為建議的“all”,這意味著cookie不但會被加密,還會被確認有效。
確認算法來自machine.config中的machinekey元素,數據確認有助于確保cookie的數據在傳輸的過程中不會被篡改。
timeout屬性指的是一個cookie終止、用戶再次登錄之前的以分鐘計的時間。在credentials小節中,我們添加二個用戶以及它們的口令,formsauthentication將使用它們對用戶進行認證。
在authorization小節中,我們希望沒有非授權的用戶能夠訪問應用。“?”表示匿名用戶,因此我們對所有的匿名用戶設置一個deny標志。
所有用戶的認證邏輯都在這里完成。如果想根據web.config、xml或文本文件、數據庫驗證用戶的證書,那么驗證工作就是在這里完成的。下面的例子根據web.config驗證用戶的證書。
由于還需要進行認證,因此在上面的代碼中引用了system.web.security名字空間,formsauthentication是system.web.security名字空間中的一個類。在本例中,我們使用了一個帶有分別用來輸入用戶名、口令的文本框、口令輸入字段,還有一個復選框,方便用戶使用一個永久性的cookie集。“submit”(提交)按鈕有一個onclick事件,它執行一個名為processlogin的子程序。在processlogin內部,我們執行了formsauthentication類的authenticate方法,用戶名和口令是其二個參數。這一方法根據用戶名和參數檢查web.config文件中信任狀的標記。如果它們相符,我們執行redirectfromloginpage方法,該方法會向用戶的機器中寫入一個cookie,對用戶的行為進行跟蹤,并確保用戶是經過認證的;如果不相符,就會發生錯誤,并通知用戶。
這是用戶請求或謀略訪問的頁。在本例中,我們將顯示被認證用戶和認證類型。
default.aspx code
新聞熱點
疑難解答
圖片精選