文章詳情頁
NET移植案例學(xué)習(xí):建造Web站點(diǎn)(2)
瀏覽:176日期:2022-07-21 11:08:04
移植方法的選擇 將站點(diǎn)移植到Visual Basic .NET和.NET框架的第一步是看看有哪些方法可供選擇?,F(xiàn)在有三種方法可以使用:· 將站點(diǎn)和Visual Basic 6.0的組件移植到ASP .NET和Visual Basic .NET· 將站點(diǎn)移植到ASP .NET,再用COM+ interoperability與現(xiàn)存的Visual Basic 6.0組件通訊· 不改變現(xiàn)存的站點(diǎn),而通過增加用ASP .NET和Visual Basic .NET寫的新的功能模塊來擴(kuò)展站點(diǎn)的功能在開始開發(fā)之前,開發(fā)小組確定了利用.NET的哪些功能模塊來替代網(wǎng)站中復(fù)雜的,且有時會有問題的代碼,并增加一些新的功能。具體的講,他們希望按下面的要求重建網(wǎng)站:· 用ASP .NET認(rèn)證來替代原來的用戶安全機(jī)制· 用ASP .NET Web Form確認(rèn)控件來替代客戶端用于報告產(chǎn)品漏洞和描述缺點(diǎn)的確認(rèn)邏輯· 用ASP .NET Web Services將Microsoft其它的網(wǎng)站溶入beta版產(chǎn)品漏洞報告體系中· 利用.NET框架的本地化功能建造一個可以很容易實現(xiàn)本地化的Web站點(diǎn)· 利用ASP .NET向用戶提供個性化的菜單和橫幅圖片為了充分利用這些特點(diǎn),開發(fā)組決定將ASP頁面移植成ASP .NET頁面。他們將不移植現(xiàn)存的Visual Basic 6.0的ActiveX組件,而是創(chuàng)建新的Visual Basic .NET組件來實現(xiàn)Web Service和本地化。現(xiàn)在讓我們看看為了完成移植,對這個網(wǎng)站到底做了哪些修改。結(jié)合ASP .NET認(rèn)證功能移植的第一步就是用ASP .NET中基于cookie的認(rèn)證機(jī)制來替換原來的客戶安全機(jī)制。這種安全認(rèn)證機(jī)制首先出現(xiàn)在PDC技術(shù)預(yù)覽中,并在Visual Studio .NET Beta 1中得到了發(fā)展。它的目標(biāo)是確定誰在訪問網(wǎng)站,而不是阻止用戶訪問。因此,開發(fā)組修改了成員資格系統(tǒng),幫助用戶注冊到Web站點(diǎn),并且在以后的Beta版產(chǎn)品中可以繼續(xù)使用。識別每個訪問者的目的是跟蹤他們報告的漏洞和缺點(diǎn),并與他們進(jìn)行必要的交流,以徹底解決問題。除了把用戶的反饋送到特定的測試站點(diǎn),用戶還可以定制這個站點(diǎn),以滿足自己的需要,幫助客戶將注意力集中在他們需要的信息上。把用戶和他們感興趣的內(nèi)容聯(lián)系起來能幫助站點(diǎn)管理員了解用戶對什么問題最感興趣。大多數(shù)測試站點(diǎn)包括了Visual Studio .NET和.NET框架各個方面的內(nèi)容,允許用戶訪問站點(diǎn)上所有的文檔,但某些用于特定方面(比如Visual Studio .NET IDE shell整和)的測試站點(diǎn)利用過濾器向客戶只提供他們感興趣的文檔。 原先使用的認(rèn)證方式使用一個ASP服務(wù)器端文件和一個Visual Basic組件所提供的方法,驗證來訪者所提供的用戶ID和密碼是否是數(shù)據(jù)庫的成員。這個文件提供了可重用代碼來完成安全檢查,但這就意味著這個文件需要被包含在每一頁的開頭,才能保證這一頁不會被未經(jīng)過認(rèn)證的用戶打開。在每一頁包含這個文件給管理員配置不需要安全保護(hù)的頁帶來了麻煩。在ASP .NET中實現(xiàn)認(rèn)證是很容易的,因為基于cookie的認(rèn)證通過將站點(diǎn)的文檔存放在某一個特定的文件夾實現(xiàn)了對文檔的保護(hù)。當(dāng)用戶企圖訪問這個受保護(hù)的文檔時,.NET框架將自動判斷用戶是否經(jīng)過了認(rèn)證。如果用戶未被認(rèn)證,.NET框架會把這個未經(jīng)認(rèn)證的請求重定向到某一個特定的HTML表單,讓用戶輸入認(rèn)證信息,并提交這個表單。如果用戶得到了認(rèn)證,.NET框架會產(chǎn)生一個可以辨別用戶的cookie,并重定向到原先的請求頁面。.NET框架還提供了一些類來幫助我們與認(rèn)證過程交互和訪問保存在cookie中的認(rèn)證信息。我們可以用Web站點(diǎn)的config.web文件來配置ASP .NET的認(rèn)證體系。這個配置文件包含了一個用于指定認(rèn)證方式的塊、該塊指明了HTML登陸表單的URL和密碼的格式。圖3是一個設(shè)置基于cookie的認(rèn)證的config.web文件。Web站點(diǎn)上原來的那種安全認(rèn)證方式為每一個訪問者唯一確立了一個對話ID。因為已經(jīng)生成了這個ID,所以我們在移植認(rèn)證過程不要改動現(xiàn)存的代碼。ASP .NET認(rèn)證機(jī)制將把未經(jīng)認(rèn)證的用戶重定向到登陸頁,讓用戶提交信用證。一旦提交了登陸頁,用戶ID和密碼將被確認(rèn),還將產(chǎn)生一個會話ID。實現(xiàn)ASP .NET認(rèn)證體系只要修改原來的登陸頁面的兩個地方。我們沒有向客戶的cookie寫入會話的關(guān)鍵字,而是使用了ASP .NET認(rèn)證cookie,將它的值設(shè)為會話的關(guān)鍵字。然后通過CookieAuthentication 類的RedirectFromLoginPage方法將用戶重新引導(dǎo)到原先的請求頁。在接下來的請求中,將通過.NET框架的HttpContext.User類來訪問會話ID。圖4顯示的是修改后的登錄認(rèn)證檢查。除了提供了一種更安全、更容易實現(xiàn)的安全認(rèn)證體制外,ASP .NET認(rèn)證體制還可以區(qū)別對待認(rèn)證過的和未經(jīng)認(rèn)證的內(nèi)容。因為保護(hù)的范圍是由config.web文件中的目錄結(jié)構(gòu)決定的,所以只要把內(nèi)容移出受保護(hù)的文件夾就可以取消對內(nèi)容的保護(hù)了。為了讓認(rèn)證機(jī)制能發(fā)揮作用,所有需要認(rèn)證才可以訪問的文件的擴(kuò)展名應(yīng)改為.aspx(ASP.NET文件的擴(kuò)展名)。正如你將在下面看到的,這是一個相對簡單的過程。
排行榜