2014-03-26 37 views
0

我正在C#中製作一個asp.net網站,並且我在slq服務器中有一個數據庫,其中有一個表Users(id, username, password, isAdmin)。列isAdminint,默認值0,所以如果用戶是admin,則isAdmin = 1否則isAdmin = 0限制用戶查看網站和文件夾

我在網站上登錄表單,並在用戶登錄時,它會創建一個Session("admin")Session("user"),取決於isAdmin值。

那麼,我該如何限制Session("user")admin.aspx頁面的訪問以及網站上的上傳文件夾呢?

我不想添加角色管理IIS,因爲管理員可以讓其他用戶爲管理員(更新isAdmin1

感謝。

+0

工作,如果用戶不是管理員然後把它們重定向到另一頁 –

+0

是的,那是我的做法,但如何喲拒絕訪問該文件夾?他可以將URL寫入該文件夾,並且可以瀏覽限制頁面的頁面加載時的 – dnisko

+0

。檢查我的答案。 – Banana

回答

0

關閉IIS中的目錄瀏覽。將其添加到web.config中以防止用戶瀏覽文件夾。這是將在IIS 7+

<configuration> 
<location path="Secured"> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
    </system.webServer> 
    </location> 
</configuration> 
+0

謝謝,我從來沒有想過目錄瀏覽... – dnisko

+1

這是如何防止非管理員用戶轉到「admin.aspx」頁面? –

+0

他問了兩個問題。一個關於限制管理頁面(我在評論中回答)和兩個關於限制對文件夾的訪問。請參閱原始帖子中的評論。他接受了這個答案,因爲這正是他真正想要的答案。 –

2

東西在這個邏輯:

登錄後,首先保存會話var中的用戶角色。 ,然後在受限制頁面的page_load中檢查用戶的角色,如果他不是admin,則重定向他以使用管理員帳戶重新登錄。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(session["role"].ToString().compareTo("admin")==0) 
    { 
    //load page stuff 

    } 
    else 
    { 
     Response.Redirect(your login page); 
    } 
} 
3

不要將標準用戶& admin保留在單獨的會話變量中。而是創建一個映射到您的用戶表的類,並以通用的方式將用戶信息存儲在其中。該類的一個屬性將是.isAdmin(整數或甚至布爾值)。然後,你可以簡單地檢查像「admin.aspx」

UserInfo objUserInfo = (UserInfo)Session("user"); 

if (objUserInfo.isAdmin == 0) { 
    Response.Redirect("User.aspx"); 
}