保护文件以供下载,仅供其计数中的信用用户下载

本文关键字:下载 用户 文件 保护 | 更新日期: 2023-09-27 18:36:58

我想创建一个网站来下载一些文件(pdf,word,xls,例如这些文件),每个文件都有骰子,例如a.pdf是10$和b.pdf ID 20$。例如,用户 "x" 有 12$,如何防止此用户下载文件 b.pdf?请给我建议。你知道我知道我可以拥有成员系统,可以hqve角色访问文件夹,但是文件呢?或者你认为我不需要注册用户,他们可以为每个文件支付在线价格,例如你选择一个.pdf你会连接到PayPal或其他人,你会付费,如果你付钱,链接将显示,但是如果用户复制链接并将其发送给他/她的朋友呢?谢谢

保护文件以供下载,仅供其计数中的信用用户下载

您应该将文件从 Web 根目录中移出(以便无法通过 URL 访问它们)。

然后,您可以编写一个 ASHX 文件或 MVC 操作,该操作采用文件名,检查是否允许登录用户访问该文件,如果是,则通过调用 Response.TransmitFile 返回该文件。

为此,我将使用通用处理程序,如 SLaks 建议的那样:添加新的 -> 通用处理程序 (.ashx) 文件。 然后在处理程序类中:

public class CustomImageHandler : IHttpHandler
{
        public void ProcessRequest(HttpContext context)
        {
            //Get file name from query string and check balance for that file extension... read the file into aStream
            context.Response.Clear();
            context.Response.ContentType = "image/...";
            context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename='"{0}'"", GetTheFileName()));
            context.Response.BinaryWrite(aStream.ToArray());
        }
}

然后图像超链接为:

http://yourdomain.path/../CustomImageHandler.ashx?filename=file1.pdf

你可以有一个接受文件 id 作为 GET 参数的页面,并让后面的代码检查它们的余额。

我想我在事务成功完成时得到了它lu 它将返回 true,我可以检查返回的值是否为 true,文件CQN是否与当前用户一起下载。感谢您的帮助:x