2010-03-04 48 views
2

Hai, 我正在嘗試爲我的網站存儲用戶權限,但我有點困惑於xml和數據庫。對於網站中的每個用戶具有不同的權限。你有沒有遇到過這個問題?例如,如果我的網站是購物網站,對於本地用戶,報表菜單無需顯示。銷售人員不需要顯示購買頁面。等等..我在哪裏可以存儲我的網站的用戶權限?

我想你明白我的問題。我已經做了這個用戶管理使用XML文件。對於每個用戶,新節點將根據菜單創建並保存在xml文件中。下次用戶登錄時,檢查權限並僅顯示允許的菜單。

我的老闆告訴我用數據庫做同樣的事情。通過使用XmlDataSource,將數據綁定到樹視圖(用於設置權限)並綁定到菜單欄也非常簡單。 他指出了安全問題。我不這樣想。

哪個更好? DB或XML

回答

1

我的建議是使用asp.net成員資格和角色(由微軟寫的)。這是一個非常好的安全解決方案 - 登錄安全性,角色(權限)並存儲在SQLServer數據庫中(不確定它是否可以存儲在別處)。

我在我的網站上使用它,您可以直接使用會員控制(登錄表單,更改密碼等),也可以自己推出。

我發現的唯一棘手的問題是在dB中設置成員表,視圖和存儲過程(你下載了一個dB腳本),但實際上這很簡單。

Here's a link to asp.net membership and roles

1

ASP .NET成員資格和角色(在ASP .NET 2推出Provider Model的一部分)是(恕我直言)不錯,只有當你需要一些基本的東西。問題是你需要使用整個系統使用SQL Server,但如果你打算移動到不同的數據庫提供者(MySQL,SQLite等),那麼你必須implement your own provider(這是最痛苦的) ,並瞭解整個作品是如何相互融合的。當然,找到一個custom implementation這很容易,但不是複製&粘貼的東西。

默認提供程序模型的另一個壞處是您將獲得大量SQL存儲過程,也稱爲維護惡夢。問題是,如果你的網站規模擴大,那麼這些SP會讓你的生活變成一個活生生的地獄(如果你曾經在那裏),如果你甚至敢於改變主機,那麼你在尋求一種享受,所以我的建議是讓你自己的權限層次結構並按照你所希望的方式使用它。另外,請查看advices以及一些很常見的權限問題的現有解決方案。

0

網站安全可以拆分爲不同的部分。

  1. 驗證:記錄在
  2. Authroization:角色/權限。

ASP.NET Forms Authentication Provider是實現身份驗證的好方法。我最近創建了一個與我們公司的X500目錄(LDAP)進行通信的自定義提供程序。這非常直截了當。

對於授權,我們實施了entlib安全應用程序塊。它允許您將角色/權限保存在可以通過用戶界面訪問的單獨位置以及服務層(假設您開發了可擴展的解決方案)。您可能還想看看將取代entlib安全應用程序塊的Windows Itentity Foundation,但它僅適用於.NET 4.0。

相關問題