ASP.NET 用户IP地址屏蔽/禁止访问

项目机构:

 

说明:

(1)添加全局文件,Global.asax

(2)添加IP地址屏蔽处理类:IPAddressFactory.cs

 

 1.Global.asax 代码实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace ShieldingIP
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
}

protected void Session_Start(object sender, EventArgs e)
{
}

///<summary>
/// 开始请求
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void Application_BeginRequest(object sender, EventArgs e)
{
string UserIPAddress = HttpContext.Current.Request.UserHostAddress;//获得远程访问主机的IP地址

bool BolIsShield = IPAddressFactory.Instance.IsShielding(UserIPAddress);//判断远程访问的用户的IP地址是否已经被屏蔽
if (BolIsShield)
{
HttpContext.Current.Response.Write("您已经被系统屏蔽!");
HttpContext.Current.Response.End();
}
}

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}

protected void Application_Error(object sender, EventArgs e)
{
}

protected void Session_End(object sender, EventArgs e)
{
}

protected void Application_End(object sender, EventArgs e)
{
}
}
}

 

2.IPAddressFactory.cs 代码实现 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ShieldingIP
{
///<summary>
/// IP地址处理类
///</summary>
public class IPAddressFactory
{
private static IPAddressFactory ipfactory = new IPAddressFactory();
public static IPAddressFactory Instance
{
get
{
return ipfactory;
}
}
///<summary>
/// 判断IP地址是否已被屏蔽
///</summary>
///<param name="_IPadress"></param>
///<returns></returns>
public bool IsShielding(string _IPadress)
{
//这里我们应该有自己的一个屏蔽IP地址库,直接判断库中是否存在当前IP地址即可
//这里为了方便演示,我直接虚拟一个屏蔽库
List<string> IpAddressList = new List<string>();
IpAddressList.Add("10.13.11.24");
IpAddressList.Add("10.13.11.25");
IpAddressList.Add("10.13.11.26");
IpAddressList.Add("10.13.11.27");
IpAddressList.Add("10.13.11.28");
IpAddressList.Add("10.13.11.29");
IpAddressList.Add("127.0.0.1");//本机的IP地址,测试效果使用
if (IpAddressList.Contains(_IPadress))
{
return true;
}
return false;
}
}
}


 

运行测试效果如果下:

 

 源码下载

posted @ 2011-11-09 19:23  小罗》  阅读(977)  评论(0)    收藏  举报