Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何允许仅属于角色的用户访问文件夹中的文件?_C#_Asp.net_Razor_Webmatrix - Fatal编程技术网

C# 如何允许仅属于角色的用户访问文件夹中的文件?

C# 如何允许仅属于角色的用户访问文件夹中的文件?,c#,asp.net,razor,webmatrix,C#,Asp.net,Razor,Webmatrix,我有一个网站,其中包含存储在服务器文件夹中的pdf文件 我只需要为登录并属于我选择的角色的用户设置对文件夹中此文件的访问权限! 谢谢你的帮助:):) 解释情况: 文件夹的名称为“文件” 文件夹中的文件名为“f.pdf” 当我键入这个url“www.website.com/files/f.pdf”时,它是一个打开的pdf文件,假设只对经过身份验证的用户打开?? 如何解决此问题???将文件夹移到根目录之外,或将其置于受保护的文件夹(如App_Data)中,以防止直接浏览。然后创建一个“处理程序”页面

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

解释情况: 文件夹的名称为“文件” 文件夹中的文件名为“f.pdf” 当我键入这个url“www.website.com/files/f.pdf”时,它是一个打开的pdf文件,假设只对经过身份验证的用户打开??
如何解决此问题???

将文件夹移到根目录之外,或将其置于受保护的文件夹(如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>


您已经尝试了什么?在数据库中,我有成员表和角色表。。evrey thing对放置文件的页面没有问题,我无法在Rolei中仅为用户显示它们如果您使用的是标准成员数据库,那么您就不需要依赖任何为您定义此行为的东西(如Windows身份验证)。您需要维护自己的成员组/用户对文件的交叉引用,以确保只有具有权限的用户才能访问您希望他们访问的文件。问题是。。。您的web应用程序不是登录用户,因此您需要自己强制执行此操作。感谢重播,但我如何才能执行此操作?将其分解为几个组成部分:您需要了解如何检查特定用户的文件权限(您的应用程序正在运行的用户最好具有上帝般的能力),或者仅依赖自定义的伪造数据库文件权限(不推荐)。坐下来15分钟,仔细思考你需要涵盖的场景,以及所有需要涉及的内容……最后你会找到答案。