2011-01-27 85 views
1

我有一個使用Windows身份驗證(Active Directory)安全性的.Net 4.0應用程序。我決定編寫自己的處理程序,通過查看頁面名稱並檢查用戶是否在被定義爲可以訪問該特定頁面的正確AD組中,以檢查用戶是否有權訪問當前頁面。簡單的AD應用程序安全

此應用程序是嚴格意義上的Intranet應用程序,只能在我們的公司域中運行。

我只是使用:「System.Web.HttpContext.Current.User.IsInRole」。

如果用戶在組中,我照常進行。如果用戶不在組中,我將用戶重定向到「禁止訪問」頁面。

我的問題是......我每次頁面加載時都會檢查(IsInRole)(在PageLoad()中,我的所有頁面都會調用一個方法來驗證用戶對頁面,每次頁面加載時。 )

你會如何建議我對此更有效率? (我想我可以至少在調用驗證代碼之前進行「!PostBack」測試,呵呵?)那麼使用Sessions Variable和/或Cookies怎麼樣?

任何意見是非常感謝!

P.S. - 我過去曾經使用過會員供應商,並考慮將其用於此應用程序,但我決定不這麼做。我想要做的事情非常簡單,我真的不想用所有會員提供的東西來垃圾我的數據庫或代碼。

回答

1

一個想法是使用web.config like here的授權部分。

另一種方法是從Init方法中執行IsInRoleCheck的基類(類型爲Page)派生所有頁面,這樣您就不會意外忘記,而且不必重複代碼頁面。

+0

這就是我正在做的,已經。我從類型頁面的基類中派生我的所有頁面。在這個基本頁面上,我做了「IsInRole」......我的帖子基本上是問這是否是一個好的解決方案。根據我在這裏和ASP.NET上閱讀的內容,似乎是這樣。所以,我要去用它! – Shayne 2011-01-31 14:06:25

1

您使用的是母版頁嗎?

如果是這樣,請在您的身份驗證頁面的Page_Load中打一個電話,它將使用您的母版頁級聯到任何內容頁面。