zoukankan      html  css  js  c++  java
  • 登录测试页面

    三十八、新建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

    上面的内容中我们把登录给大家写了一下,接着我们看下登录成功以后

     

    四十二、跳转一

     

    四十三、跳转二

     

  • 相关阅读:
    iOS,Android,WP, .NET通用AES加密算法
    iOS开发笔记-图标和图片大小官方最新标准
    因为对 Docker 不熟悉建了 N 多个 Nginx
    Docker 学习笔记 2019-05-27
    Linux Mint 19.1 安装 Docker 过程笔记
    W600 一块新的 KiCad PCB
    KiCad Mark 点名称
    一次乙型流感记录(2019-05-24)
    为什么不喜欢在 QQ 群里回答问题?
    Git 的两种忽略文件方式 gitignore 和 exclude
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2820725.html
Copyright © 2011-2022 走看看