zoukankan      html  css  js  c++  java
  • 给自己的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

  • 相关阅读:
    安装JavaJDK没有jre环境的解决办法 错误: C:Program FilesJavajdk-11.0.7jre
    Centos7 安装redis 5.0.8 开机自启动
    某科学的PID算法学习笔记
    数学建模题目和模型汇总(2000-2019 国赛本科组)
    我,不是说了PID要平均值吗?
    私人网盘很难搭建吗?实际上仅需两步!
    Appium+Python
    Appium+Python-模拟手机滑动操作(swipe)
    Appium+Python-模拟手机按键操作
    Appium+Python-元素定位(常用定位)
  • 原文地址:https://www.cnblogs.com/sxlfybb/p/301516.html
Copyright © 2011-2022 走看看