【问题标题】:How Can i allow users belongs to role only to access files in folder?我如何允许用户属于角色只访问文件夹中的文件?
【发布时间】:2013-03-07 04:25:02
【问题描述】:

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

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

【问题讨论】:

  • 你已经尝试了什么?
  • 在数据库中,我有成员资格表和角色表.. evrey 事情没问题,页面放有文件我有问题只为角色中的用户显示它们
  • 如果您使用的是标准会员数据库,那么您将不依赖于为您定义此行为的任何内容(如 Windows 身份验证所做的那样)。您需要维护自己的成员资格组/用户对文件的交叉引用,以确保仅允许具有权限的用户访问您希望他们访问的文件。问题...您的网络应用程序不是登录用户,因此您需要自己执行此操作。
  • 感谢重播,但我该怎么做?
  • 把它分解成它的组成部分:你需要学习如何检查特定用户的文件权限(你的应用程序运行的用户最好有神一样的能力)或者仅仅依赖于自定义的假数据库文件权限(不推荐)。坐下来 15 分钟,思考一下你需要涵盖的场景以及需要涉及的所有内容......最后你会弄明白的。

标签: c# asp.net razor webmatrix


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多