我正在一個網站(用C#開發的ASP.NET)上工作,這個網站已經傳遞給我了。當我通過該網站的工作,我發現很多網站都有這種類型的代碼在它:隱藏控件作爲網絡安全形式,建議更好?
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
這一切通常在網站的後臺代碼完成(在Page_Load方法)。本質上,這是爲了防止未登錄的用戶訪問組件(該網站的規則是,未登錄的用戶在登錄前應該無法看到網站的任何部分)。 以上的方式工作 ...但必須始終檢查用戶是否已登錄,然後轉到所有這些組件的正確狀態,這似乎相當昂貴。
是否有不同的方式,這個問題可能會接近。僅僅從思考/研究的角度來看,我想也許有一種方法可以在用戶未登錄的情況下重定向回主頁。甚至進一步,我可以擴展一個基本頁面,以便爲任何用戶頁面擴展了基本頁面。但是,我在這方面的知識是有限的,所以我的建議可能無效。
什麼能如此建議?有什麼更好的?有什麼好的嗎?
儘管這種方法在大多數情況下都是絕對推薦的,但它不可能更快。如何設置一些布爾變量在接近發送301往返瀏覽器的開銷的任何地方?你正在談論納秒的處理器時間與數百毫秒的網絡延遲以及處理多個瀏覽器請求的服務器。並且Response.End()拋出一個ThreadAbortException異常,這會產生它自己的開銷。 – womp 2010-01-18 17:57:13
只是爲了澄清 - 保護需要*唯一*認證訪問的頁面絕對應該以這種方式完成。我不清楚OP是否需要這個或不。 – womp 2010-01-18 17:58:49
之所以這樣更快,是因爲OnInit之後的頁面循環方法都沒有以這種方式調用。節省大量的CPU時間。對於所有意圖和目的,如果用戶未登錄,則預期會有額外的往返時間和與其相關的時間。 – TJMonk15 2010-01-18 18:34:09