最近项目中的一个政务系统要求可配置的IP访问控制,既然有这个需求我们自 然要满足啦。
对于之前一篇中使用IHttpHandlerFactory验证用户经验,这次使用 HttpModule来更早的检测用户。
如何来更好的判断IP是否在允许的列表或者禁止的列表,基于目前IPV4,就干 脆IP的4位字段分别判断,这样也可简单的批量IP网段设置。
系统中将配置保存到数据库中,数据库设计如下:
接下来就可编写Httpmodule了,如下:
public class IPHttpModule : IHttpModule
{
#region IHttpModule 成员
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
#endregion
///
/// 提示信息
///
const string ErrorHtml = @"
您的访问受到限 制,请与系统管理员联系。
";
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
// 判断是否IP限制
if (!CheckPermisssion (context.Request.UserHostAddress))
{
context.Response.Write (ErrorHtml);
context.Response.End();
}
}
}