|
|
1
11
构建一个所有媒体都必须通过的HttpHandler。然后,在检索文件并将其发送给用户之前,您可以执行任何您想要的验证。将所有媒体放在wwwroot主路径之外,或使用权限拒绝访问该文件夹。 有关此主题的更多信息,请点击此处: |
|
|
2
2
我使用这样的xml文件来设置哪些用户/组可以访问文件
文件存储在http根目录之上,因此无法通过URL访问。 当用户尝试访问GetFile.aspx时?file=file.doc我加载XML,获取以下行
,然后我调用一个函数
它检查用户是否已登录并比较权限,如果该用户可以拥有该文件,我会从磁盘读取文件并用
实际上,现在我有1000多个文件,我想将文件数据写入数据库,因为XML在5年内损坏了两次,可能是由于崩溃或同时使用。 |
|
3
1
根据您在Spikolyn回复中的评论
我猜你试着 防止未经授权 共享 媒体 . 这是许多公司(微软、苹果、IBM等)投入大量资金解决的问题。 解决方案是DRM ,现在他们正在删除它,因为 它失败了 . 所以,我的答案是你 无法阻止共享 如果用户愿意付出一些努力来避免它。 你可以 让诚实的人保持诚实 通过应用一些技术,如 Spikolyn 或 Lusid 在他们的回答中解释。 |
|
|
4
0
我建议使用一个表来保存每个用户都可以访问的文件:
然后是一个文件表:
在硬盘上,将文件命名为FileID(唯一标识符)和FileType(扩展名,例如.jpg)。权限表中的fileID将保存在另一个表中生成的唯一标识符。 您可以通过URL传递此信息,相对安全地知道用户将无法猜测任何其他文件的名称。 更新:顺便说一句, 很 比编写HttpHandler或处理文件权限更简单。然而,尽管有人猜测另一个文件名的可能性微乎其微,但这并不是严密的安全措施,因为一个用户可能会给另一个用户一个访问该文件的权限。 |
|
|
5
0
牛皮纸包装.aspx?id={guid} 在media.aspx的Load事件中,您验证用户是否经过身份验证,然后验证用户是否有权查看媒体,如果有,则将媒体作为流加载并将其作为 Spikolynn 论证。 为什么这样做?代码编写简单,您可以获得ASP的所有好处。NET和IIS的身份验证服务,您可以从中找到请求媒体的用户。将该用户映射到媒体对象的访问列表很简单。页面的请求对象就在那里。你还隐藏了媒体的名称,所以你无法从网址上知道发生了什么。 你如何阻止人们直接访问你的媒体?您的媒体文件无法存储在IIS虚拟目录中。如果是,则有可能直接下载。您可以将它们作为字节数组(blob)存储在数据库中,也可以将它们存储在web虚拟目录之外的磁盘上。用户必须通过ASP。NET访问文件 你如何跟踪哪些用户可以访问哪些媒体?您通过asp.net会员资格跟踪您的用户。这意味着每个用户在aspnet_users表中都有一个ID。使用id和文件名(或包含实际媒体的blob)为您的媒体创建一个表。然后,您只需要创建第三个表来连接这两个表。此表将包含用户id和媒体id,表示此用户可以查看此媒体。使用用户id(来自asp.net会员资格)和媒体id(来自URL),您只需
如果计数>;0,用户可以查看媒体。 以下是一个如何使用URL的示例:
|