2010-05-10 236 views
1

我們目前正在重新創建一種嶄新的安全模型,這種模型使我們現有的流程變得渺茫。現在,我們計劃在登錄過程中獲取用戶的角色,然後使用Base Page類來檢查用戶是否具有用戶正在導航的相應頁面的角色。ASP.Net角色:頁面級安全問題

我們也可以根據用戶的角色限制菜單的選項,但我們遇到了問題,用戶通過輸入或使用舊書籤導航到我們系統中的頁面。顯然,我們需要某種頁面級的訪問。

我們的Base Page類中的一個簡單函數檢查Arraylist中的角色與頁面的指定角色,但是我想知道是否有任何內置的功能來支持這個或更乾淨的解決方案。

回答

1

您是否使用內置的會員資格?

如果是這樣,您可以使用web.config文件的location部分來限制對單個頁面或整個目錄的訪問。從MSDN

下面的示例允許 匿名用戶訪問 Logon.aspx頁:

<configuration> 
    <location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

問題是,這是基於每個用戶。大約有10,000多個用戶,每個用戶可能有也可能沒有完全不同的規則。將所有這些區別添加到web.config中似乎是一個相當大且冗長的任務。 – jlrolin 2010-05-10 17:00:09

+0

@jlrolin - 你可以使用''或類似的 – 2010-05-10 17:23:54

2

你看過ASP.Net會員嗎?它負責管理上面列出的所有場景(修剪菜單,頁面安全性),並且使用非常簡單。

有關會員資格的更多信息,請點擊此處 - http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

+0

我想滾動自己的角色提供和調用的一個User.IsInRole功能如果我引用用戶擁有的會話角色Arraylist,角色就足夠了。這基本上和調用Base Page類函數一樣。 – jlrolin 2010-05-10 17:01:00

+0

如果您要使用Membership RoleProvider以及Web配置的位置/授權部分來指定哪些角色可以看到哪些頁面,則不必從頁面中引用角色列表。 – 2010-05-10 18:36:06