2012-02-22 92 views
0

我有一個ASP.NET應用程序,其中大部分頁面都可通過單一登錄模塊(可將用戶名設置爲Session數組變量)的所有經過身份驗證的用戶訪問。現在我有一個文件夾A包含一個B.aspx頁面和一個允許訪問該頁面B.aspx的用戶名單。ASP.NET單頁面授權

我的問題:我如何優雅地授權這一個頁面的這些用戶,或更好的,這個文件夾。可以使用文件夾A中的Web.config文件中的位置標記完成嗎?如果是這樣,我如何將該配置與自定義代碼連接以檢查存儲在會話變量中的用戶名是否是該文件夾或頁面的授權用戶之一?我可以使用自定義membershipprovider嗎?

在此先感謝!

回答

0

首先,由於會話cookie中的用戶名不是一種處理此問題的好方法,因此會廢棄這種已被克服的安全方法。好吧,也許有點太過分了,因爲低安全性可能適合你。如果是這樣,您可以爲檢查用戶名並與可更新列表進行比較的頁面編寫自定義處理程序。

新增:使用會話對象,您會更安全一些,因爲會話令牌已發送並且名稱保留在會話中,但Membership位(下方)會處理特定會話的翻譯而不會重寫與您的自定義「此用戶正在使用此會話」方法。是的,最終你可以爭辯說微軟做了一些與你的軟件非常相似的東西,但是你將維護工作留給了他們。

回到我原來的方向,內置ASP.NET的角色和成員資格的概念。如果您使用這些位,則可以通過設置具有安全限制的新web.config,將安全修剪頁面(或者甚至更好的文件夾,以便您可以添加頁面)給某些用戶(不是很好)或角色(更好)。

關於內置的東西很酷的事情是你可以聲明性地設置安全性,並讓管道確定用戶是否有效,而不需要任何繁重的工作。

關於各種面向ASP.NET的網站上的成員資格和角色信息有很多。

+0

對不起,我不是指會話cookie,而是服務器端會話對象。此外,我找到的所有在線文檔都使用表單進行身份驗證。我的身份驗證已經由外部模塊處理,因此我在本站點上尋找解決方案的帖子... – Chris 2012-02-22 22:06:00

+0

這是我的不好。加了一點。它仍然是購買與構建的核心概念,即使「價格」是0美元,就像.NET一樣(可以爭論它是免費的,如啤酒,還是免費的,就像在演講中一樣,後來;-))。會話變量的問題是你必須自己控制安全位。沒有正確完成,你最終會遇到硬編碼。另一件事,你自己處理頁面文件夾的特定配置會更困難,而Membership是內置的。而且,如果你使用站點地圖,你可以修剪菜單,所以沒有權限的用戶在他們的菜單中沒有選項。而且,您不必編寫該代碼。 – 2012-02-22 22:13:19

0

可以實現指定用戶的名稱,可以訪問由逗號分隔的目錄。

+1

<位置路徑= 「路徑名」> <授權> <允許用戶= 「馬修,薩拉」/> 2012-02-23 01:49:41

+0

由於Nudier。我已經得到了那麼多。我被卡住的地方是如何控制決定當前用戶是否是列表中某個名稱的機制,因爲這些信息存儲在服務器的會話對象中。 – Chris 2012-02-23 07:05:05

0

當您的用戶名不脫在web.config中罰款,而不是在某些會話變量中定義,您必須爲此例如創建表單身份驗證票證。

FormsAuthenticationSupport formsAuthenticationSupport = new FormsAuthenticationSupport(); 
formsAuthenticationSupport.SignIn(UsernameInSession, RoleName, true); 

現在您可以在web.config中爲UsernameInSession設置身份驗證規則和位置標記。