• Web网站IP过滤功能第二版(C#)


    第一个版本:http://blog.csdn.net/yangyuankp/article/details/7748110

             这次主要是改进了Web端,把功能进行封装,变成一个dll类库,使用变得及其简单。并美化整合了后台控制界面。

             同时小小的改动了一下数据库,把配置都放在了数据库里。因为web.config文件虽然能保存配置,但是只能读取,无法更改,非常不方便。客户端配置也在数据库中,并提供了界面式的管理,摒弃了第一版中手动修改的方案,界面如下:


             改进后发布方法:

             1.把IPManager文件夹放在网站根目录,通常是主页所在的目录。

             2.在目标项目的UI层中引用IPLimit.dll。

             3.在主页文件(验证地址)Page_Load事件中插入以下代码,并引用IPLimit命名空间(using IPLimit)。

    //--------------------------IP过滤---------------------------------
    //检查参数
    if(!string.IsNullOrEmpty(Request.QueryString["ip"]) && !string.IsNullOrEmpty(Request.QueryString["mac"]) && !string.IsNullOrEmpty(Request.QueryString["time"]) && !string.IsNullOrEmpty(Request.QueryString["control"]))
    {
        IPLimit.IPManager ipmanager = new IPLimit.IPManager();
    
        //参数解码
        string ip = Server.UrlDecode(Request.QueryString["ip"].ToString()).Replace(" ","+");
        string mac = Server.UrlDecode(Request.QueryString["mac"].ToString()).Replace(" ","+");
        string time = Server.UrlDecode(Request.QueryString["time"]).Replace(" ","+");
        string control = Server.UrlDecode(Request.QueryString["control"]).Replace(" ","+");
    
        //检查,获得返回信息
        string returnMessage = ipmanager.check(ip,mac,time,control);
    
        //根据返回信息判断是否允许访问
        if (returnMessage != "True")
        {
            Response.Redirect("~/IPManager/SetupClient.aspx?message=" + Server.UrlEncode(returnMessage));
            return;
        }
    }
    else
    {
        Response.Redirect("~/IPManager/SetupClient.aspx?message=" + Server.UrlEncode("Error:请先安装客户端再使用本系统!"));
        return;
    }
    //------------------------------------------------------------------

             4.在web.config配置文件中配置数据库连接字符串(需要加密),格式示例:

    <addname="dataBaseString" connectionString="xxx " />

             改进后的数据库关系:



             其中,WebConfig表创建语句:


    CREATE TABLE t_WebConfig(
    
        id bigint IDENTITY(1,1) PRIMARY KEY,
    
        configName varchar(900) NOT NULL UNIQUE,
    
        configValue varchar(900) NOT NULL
    
    );

             改进后的UI层关系:



             效果图:



             IPLimit.dll内部结构:



             整体来说,第二版较第一版有很大的改动,尤其是Web端。

             经过优化,Web端的使用已经相当便捷,整个发布过程不到三分钟,而且不容易出现问题,与原有系统基本无耦合。觉得最麻烦的就算配置数据库连接字符串了,这个必须手动完成。

             如果将来出第三版,我想将会是把这个系统加入Session元素,让整个网站的每个页面都有IP过滤功能,通过IP控制整个网站的权限。


  • 相关阅读:
    儿童文学经典
    育儿经
    彭博新闻社网站10月1日报道称,人民币1日获得了全球储备货币的地位。据认为,这个具有里程碑意义的事件将为中国债券市场注入活力,因为据预计,这会促使多达1万亿美元的资金在未来五年里流入该国债市。
    山西宗教文化漫谈(三)一五台山:四大佛山之首
    山西宗教文化漫谈(一)
    山西宗教文化漫谈(四)——云冈:东方艺术宝库
    山西宗教文化漫谈(六)--西山大佛
    nginx配置入门
    .zip/.rar打包与解压
    centos一键安装lnmp成功后无法访问ip(解决办法)
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/2801824.html
Copyright © 2020-2023  润新知