给自己的Web文件夹增加一个图片或其它文件认证


以前见很多网站,在他的网站上面,不论是图片还是软件都可以正常显示或者下载,可是就是不可以"盗版".如果一"盗版"就会显示该网站指定的登录或者错误页面。觉得很神奇的。
呵呵.现在我们来使用C#来实现这一功能,给自己的网站加上一把锁,让盗版者无处下手。

首先作的是在IIS中将要处理(暂且这样叫吧)的图片或者软件加入程序处理方式。比如我们要对jpg的图片处理

打开IIS,打开要处理网站的属性,在主目录中点击配置,在新出来的“应用程序配置”窗口中的“映射”选项卡上面添加应用程序扩展映射。可执行文件与.aspx的可执行文件一样,扩展名,改为“.jpg"(可以根据自己的需要,多添加几种,但要在后面的程序中,作出相应的处理)。动作也改为和.aspx一样。添加成功后,IIS中的设置就算是完成了。

第二步作的就是要写个DLL文件了。

新建一个类,这个类一定要实现接口IHttpHandler。其实也就一个方法,一个属性。

 public class Class1:IHttpHandler
 {
  #region IHttpHandler 成员

  public void ProcessRequest(HttpContext context)
  {
   string strFileName = context.Server.MapPath( context.Request.FilePath );

   if( context.Request.ServerVariables["HTTP_REFERER"] == null )
  {
    context.Response.ContentType = "Image/Jpeg";
    context.Response.WriteFile( "/no.jpeg" );
   }
   else if( context.Request.ServerVariables["HTTP_REFERER"].ToUpper().IndexOf(www.myWebSite.com) > 0 )
   {
    context.Response.ContentType = "Image/Jpeg";
    context.Response.WriteFile( strFileName );
   }
   else
   {
    context.Response.ContentType = "Image/Jpeg";
    context.Response.WriteFile( "/no.jpeg" );
   }

  }

  public bool IsReusable
  {
   get
   {
    // TODO:  添加 MyClass.IsReusable getter 实现
    return true;
   }
  }

  #endregion
 }

将这个类,编译成dll放在bin目录下。当然类也要有命名空间的。

第三步也就是最后一步,也是最关键的一步。

在Web.Config文件中增加一个新的节点(如果存在就修改了)

   <httpHandlers>
  <add verb="*" path="*.jpg" type="Class1,WebTestApp" /> //class1是指类名,webtestapp是指dll文件的名字
   </httpHandlers>

这样,所有关于jpg的访问就都要经过此dll的处理了。如果合格就显示正常的文件,否则呢, 就会显示你指定的图片。
用同样的方法或者说是思路,可以举一反三,几乎将所有的图片,资源等文件一网打尽!!

参考文章:http://www.c-sharpcorner.com/UploadFile/Ashish1/CountImageRequestsvb11102005044741AM/CountImageRequestsvb.aspx?ArticleID=bc902a54-16bb-4614-ab35-e6bb2aef8ba9

posted on 2005-12-21 12:47  房客  阅读(514)  评论(3编辑  收藏  举报

导航