三十八、新建test页
这个网页只有登录的用户才可以看,
三十九、登录测试页面
网站管理员操作的后台页面有很多,在每个页面加这段代码的话,自己累,用户也非常的不爽。我们有什么好的方法处理这个问题么?
可以用过滤器:HttpModule---其中最核心的就是19个事件。
四十、19个事件
看表,得知使用第九个。如何使用这张表:由于每一个动态页面都会走过滤器,我们就可以在过滤器里面进行判断。过滤器有19个事件,我们一查表发现是第9个。
那么,我们怎么去使用第9个事件呢?
可以自己定义个类,来继承HttpModule这个接口,也可以在全局配置文件里面,到底使用哪种方式,随便你.
下面我写好了这段代码,分享源代码贡大家使用:
插入CheckAdminModule.cs位置:
1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Linq; 5 using System.Web; 6 using System.Web.Security; 7 using System.Web.UI; 8 using System.Web.UI.HtmlControls; 9 using System.Web.UI.WebControls; 10 using System.Web.UI.WebControls.WebParts; 11 using System.Xml.Linq; 12 13 namespace Web.Common 14 { 15 //1.自己定义个类继承自IHttpModule 16 public class CheckAdminModule:IHttpModule 17 { 18 #region IHttpModule 成员 19 20 //2.IHttpModule里面有个主要的方法Init ,参数是HttpApplication。这就是我们的请求管道。 21 public void Init(HttpApplication context) 22 //3.获取第9个事件,通过委托调OnRequest这个方法 23 { 24 context.AcquireRequestState+=new EventHandler(OnRequest); 25 26 } 27 //4.看下这个方法怎么做的呢? 28 public void OnRequest(object source, EventArgs e) 29 { 30 HttpApplication application = source as HttpApplication;//得到Application 31 HttpContext context = application.Context;//得到请求上下文. 32 Uri url = context.Request.Url;//得到当前请求的URL 33 34 //5.请求Admin目录下的文件时,需要进行身份验证,只有管理员才能访问. 35 //6.为什么做个判断呢?就是我的后台的管理页面都要放在单独的文件夹里面,放在了admin里面了。如果下一步请求admin文件夹下的文件的话,肯定会带文件夹的名字。就判断一下这个路径里面有没有admin?有的话,就是请求的admin 36 if (url.AbsolutePath.ToLower().StartsWith("/admin")) 37 { 38 //adminlogin.aspx和logout.aspx不需要身份验证 39 //7.如果是的话,再判断一下,这个路径的末尾包不包含:adminlogin.aspx。包含的话,可以访问 40 if (url.AbsolutePath.ToLower().EndsWith("adminlogin.aspx")) 41 { 42 return; 43 } 44 //退出 45 if (url.AbsolutePath.ToLower().EndsWith("loginout.aspx")) 46 { 47 return; 48 } 49 //8.如果是admin下的一个文件但不是登陆退出的话,下一步就校验session,如果session为空的话,直接跳到登陆页面就行了。 50 if (HttpContext.Current.Session["Name"] == null) 51 { 52 HttpContext.Current.Response.Redirect("adminlogin.aspx"); 53 } 54 55 56 } 57 } 58 59 public void Dispose() 60 { 61 throw new NotImplementedException(); 62 } 63 64 #endregion 65 } 66 }
关键是配置项,我们要在Web.config里面配置一下。
四十一、Web.config
上面的内容中我们把登录给大家写了一下,接着我们看下登录成功以后
四十二、跳转一
四十三、跳转二