我正在开发一个电子学习网站,我们已经开发了Flash课程。我想知道如何阻止我们的课程从我们的网站上下载。用于开发网站的技术是带有C#的ASP.NET。
答案 0 :(得分:0)
假设您正在开发一个带有用户登录系统的电子学习网站,您只能向具有特定课程权限的经过身份验证的用户授予课程访问权限。如果对课程文件(swf,html等)有未经身份验证/公开请求,则拒绝将该文件提供给客户端。
我确信还有其他方法可以实现这一点,但一种方法是在Global.asax中处理这些文件请求,一般的想法是使用“Begin_Request”,例如:
void Begin_Request(object sender, EventArgs e)
{
if (Request.FilePath.Contains("yourprotectedpathname"))
{
if (check session if user is not logged in or does not have access)
{
Server.Transfer("404.aspx");
return;
}
}
}
}
您当然希望存储用户对数据库中哪些课程的权利,并利用会话
正如其他人所提到的,客户可以看到的任何内容都可以下载。这种方法只会限制有权下载课程的客户。
答案 1 :(得分:0)
正如其他人所说,用户需要能够下载内容才能查看。如果您的Flash文件是独立的,则用户可以从其缓存中提取SWF文件并在本地运行它们,或者将文件发布到另一台服务器以在线访问它们。
如果通过C#脚本从数据库中读取Flash文件中的内容,这将使用户更难以复制结构。
我真的不推荐这种方法,但您可以将SWF文件硬编码为仅从您的域加载,例如(AS3):
var myURL:String = "http://www.mydomain.com/";
//Check to see if the SWF is being loaded from mydomain
if (loaderInfo.url.slice(0, myURL.length) != myURL) {
//If it isn't being loaded from mydomain, remove all displayobjects from stage
while (numChildren > 0) {
removeChildAt(0);
}
}
此ActionScript将从舞台中删除所有项目,如果有人尝试在本地或从其他域加载SWF,则只显示空白页面。我不建议这样做,因为您将域硬编码到Flash文件中。如果将文件移动到另一个域,则必须更新代码。您还需要考虑网址的变化(例如https,mydomain.com,www.mydomain.com等)