2014-02-20 51 views
0

我遇到了一個問題:ASP.NET中頁面的多重訪問規則

我有一個成功的登錄機制的項目。 我使用了登錄控制,然後編寫代碼來檢查登錄控件中的用戶和密碼是否與數據庫中的用戶和密碼匹配。

匹配對,這種情況發生:

if (authenticated) 
     { 
      FormsAuthentication.RedirectFromLoginPage(LoginControl.UserName, LoginControl.RememberMeSet); 
     } 

並登錄後,在我可以訪問/重定向到Members.aspx在分開的文件夾,並用

<authorization> 
     <deny users="?"/> 
    </authorization> 

在web.config中我阻止匿名用戶訪問此文件夾。

但我必須從管理文件夾中分離成員文件夾。

我在DB中的Users表中有額外的列,告訴我用戶是否是Admin。

我怎麼能給管理員用戶額外的權限或限制普通登錄用戶訪問管理文件夾?

回答

1

如果我理解正確和上面的代碼工作,你可以拒絕某些網頁這樣的..

<location path="AdminPage.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admins" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 

將拒絕用戶=「*」會否認每個人,除非他們有機會獲得。這是他們中的多少人。希望這可以幫助。

然後登錄後,您可以檢查該用戶是否是管理員。如果他們是,他們可以訪問該頁面,如果他們不是,他們不能。我目前使用Active Directory,但可以使用SQL或Linq to Sql來檢查它們是否是管理員。

編輯:這裏有一些鏈接可能會幫助你在正確的方向。

Link One這是一個「過時」,但它會告訴你它是如何被推薦的。

Link Two

Link Three這一次展示瞭如何建立一個SqlMembershipProvider的。

第三個是我建議探索的那個。我在工作中使用ActiveDirectoryMembershipProvider和我的應用程序。我認爲這將是你最好的機會。

+0

真棒,希望能有這樣的事情。我如何設置角色? – SubjectX

+0

只是要記住,我沒有使用WSAT(http://www.codeproject.com/Articles/342061/Understanding-ASP-NET-Roles-and-Membership-A-Begin).. – SubjectX

+0

這將要有點複雜。你將不得不檢查用戶是否是頁面加載的管理員。如果用戶不是管理員,那麼您必須將他們重定向到「未授權頁面」。據我所知,我不認爲你可以在webconfig中使用「允許角色」。如果你使用sql方法,你將不得不改變'拒絕用戶=「*」'拒絕用戶=「?」。基本上你會允許每個用戶訪問所有的頁面,但使用你的SQL來驗證他們是否是管理員。如果沒有,重定向它們。 – Humpy