2013-03-07 60 views
0

我有一个网站,其中包含存储在服务器 文件夹中的pdf文件,我需要设置对文件夹中的这些文件的访问权限,只为登录并属于我选择的角色的用户! 感谢帮助:) :)如何让用户只属于角色来访问文件夹中的文件?

说明情况:文件夹的 名称为“文件”文件夹中的文件 名称是“f.pdf” 当我键入此网址“www.website.com/ files/f.pdf“它是开放的pdf文件,假设只对经过认证的用户开放? 我该如何解决这个问题?

+0

你已经试过了什么? – Middas 2013-03-07 04:31:13

+0

在数据库中我有会员表和角色表..和evrey的东西是确定的页面与文件我有问题,只显示他们的角色 – 2013-03-07 04:35:55

+0

用户如果您使用标准的会员资格数据库,那么你不依赖于任何为你定义这种行为的东西(比如Windows认证)。您需要维护您自己的成员组/用户对文件的交叉引用,以确保只有具有权限的用户才能访问您希望他们访问的文件。问题...您的网络应用程序不是登录用户,因此您需要自己执行此操作。 – 2013-03-07 05:05:28

回答

2

移动根目录外的文件夹,或将其设置为受保护的文件夹(如App_Data)以防止直接浏览。然后创建一个“处理程序”页面,可以对用户进行身份验证并提供文件。在处理程序中的代码会是这个样子:

@{ 
    WebSecurity.RequireAuthenticatedUser(); 
    var file = Request["file"]; 
    if(Path.GetFileExtension(file).Equals(".pdf")){ 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment; filename=" + file); 
     Response.WriteFile(Server.MapPath("~/App_Data/PDF/" + file); 
    } 
} 

在你的页面中,你只需要提供一个标准的链接,但href应指向处理程序,并添加到查询字符串的文件名:

<a href="~/handler.cshtml?file=myPdf.pdf">Click to download</a> 
+0

感谢迈克这是伟大的解决方案:) – 2013-03-07 21:16:02

相关问题