2012-05-24 183 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

它不那么简单。这是一个很长的事情来解释,但逻辑必须在代码中处理。 –

相关问题