2012-05-24 227 views
-1

我有一個站點,用戶使用表單身份驗證登錄到該站點,我想在該站點中將特定文件夾中的文件限制爲某些用戶。將某些用戶的文件訪問權限限制到某些文件夾

所以,舉例來說,文件夾dir/foo將訪問user1但不user2user3和文件夾dir/bar將訪問user2但不user1user3

上述文件夾不是在我部署站點時創建的。它們是在網站的整個生命週期中創建的,我可以通過代碼(通過文件名)知道誰可以訪問哪些文件。

我的設置是這樣的,我有一些用戶角色爲Member。 A Member代表一家公司。每個Member具有角色爲Seller,BuyerViewer的用戶。現在,每個用戶是否是Member,Seller,BuyerViewer應該能夠查看屬於他的公司的文檔。所以,如果Seller1具有文檔a.txt然後Seller1應該能夠看到它,Member1應該能看到它(Member1是公司到Seller1所屬),Buyer1應該能看到它(屬於Member1),Viewer1應能夠看到它(屬於Member1),但Buyer2不應該能夠看到它(如果他屬於Member2)。文檔放置在以文檔所屬用戶的名稱命名的文件夾中。例如,屬於Seller1的文檔位於名爲Seller1的文件夾中。另外,還有一個用戶名爲Admin,他們可以查看所有文檔。

我該怎麼做?

+0

[限制文件訪問某些用戶](http://stackoverflow.com/questions/10738673/restricting-file-access-to-certain-users) –

回答

1

你會在你的web.config文件中做到這一點。這將是更好,如果你組織的用戶分組,但它可以通過用戶的基礎上做的用戶:

<configuration> 
    <system.web> 
     <authorization> 
      <!-- GLOBAL authorization --> 
      <allow users="user1" /> 
      <deny users="user2, user3"/> 
      <allow roles="GoodUsers" /> 
      <deny roles="BadUsers, MouthBreathers"/> 
     </authorization> 
    </system.web> 
    <!-- local individual folder/file authorization 
    <location path="/dir/foo"> 
     <system.web> 
      <authorization> 
       <allow users="user1" /> 
       <deny users="user2, user3"/> 
       <allow roles="GoodUsers" /> 
       <deny roles="BadUsers, MouthBreathers"/> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

編輯: 鑑於你的更新說明中添加文檔管理方面與其他濾光器添加一家公司的混合有幾種方法可以做到這一點。我建議的主要方法是將所有文檔放在根文件夾之外,這樣它們就不能被任何隨機用戶瀏覽。然後構建一個提供搜索能力的基於頁面的界面。根據文件夾/文件的數量,這可以通過多種方式完成。如果每個文件夾的文檔數量很少(每個文件夾少於1000個,少於1000個文件夾),那麼您可以輕鬆地讓系統直接訪問文件系統以提供對這些文件列表的讀取訪問權限。如果你不止這些,我建議有一個外部機制將這些文件編入一個易於搜索的數據庫中。然後你的界面將負責確定誰看到哪些文件。

最後,要將文件提供給用戶,您需要構建第二個頁面,其具體職責是獲取特定文件並將其作爲二進制流提供。

+0

但新用戶將在網站上創建所有的時間。 –

+0

@SachinKainth - 這就是爲什麼我建議用戶使用組。這樣用戶只需要添加到組中。我將發佈一個編輯,顯示它如何受組(角色)的限制。 –

+0

它不那麼簡單。這是一個很長的事情來解釋,但邏輯必須在代碼中處理。 –

相關問題