最简单的代码:

if(Session["LoginUser"] == null)  //注意:Session["LoginUser"]后面,没有ToString()哦,你要是加上的话,就会出错了.
        {
                Response.Redirect("Login.Aspx"); //如果Session为空,则转到登陆页.
        }

一个更简单的办法:

假设一个网站有很多页面,如果用户没有登录,那么不允许访问网站里的任何页面,你打算怎么做?是不是要在每一个页面里都判断Session["UserName"]是否等于null?这样做也行,但是如果网站页面很多,就是不停的ctrl + c,ctrl+v估计也要很久,再假设如果有一天判断条件改变了呢,是否要一一修改?下面说一个方法:

首先定义一个BasePage类,里面负责写判断用户身份登录的代码,如下:

using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls;

/// <summary> 
/// BasePage 的摘要说明 
/// </summary> 
public class BasePage:System.Web.UI.Page//这个很重要 

public BasePage() 

   // 
   // TODO: 在此处添加构造函数逻辑 
   // 
        this.Load += new EventHandler(BasePage_Load); 

    void BasePage_Load(object sender, EventArgs e) 
    { 
        if (Session["UserName"] == null) 
        { 
            Response.Redirect("Login.aspx"); 
        } 
    } 
}

然后,让只有登录后才允许访问的页面继承该BasePage类,这里假设页面是Default.aspx,代码如下:

using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls;

public partial class _Default : BasePage 

    protected void Page_Load(object sender, EventArgs e) 
    {


}

这里省略Defaut.aspx.的前台代码,下面运行该页面,是不是发生了跳转,到Login.aspx.

技术原理:

如果类A 继承自类B,类B继承自类C,那么如果实例化类A,会依次调用类c,类B,类A的构造函数,也就是说,实例化子类时,会优先调用父类的构造函数

 转自:http://www.cnblogs.com/360S/archive/2011/11/21/2257099.html
session丢失问题:http://www.cnblogs.com/yongning/archive/2007/11/10/955261.html

最新文章

  1. Java SE、Java EE和Java ME有什么区别?
  2. 语句:分支语句、switch case ——7月22日
  3. struts (一)
  4. C++检测一个文件是否存在
  5. 【原】隐藏ultraGrid1指定列
  6. MSMQ是什么?
  7. C++多线程编程(三)线程间通信
  8. iso-开发基础知识-5-适配器
  9. Eclipse中删除tomcat server 导致不能重新创建该版本的tomcat server
  10. Makefile Android.mk 引发的思索
  11. app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印
  12. WPF:Webbrowser 捕获关闭事件
  13. Java 多线程加锁的方式总结及对比(转载)
  14. RabbitMQ消息队列(三)-Centos7下安装RabbitMQ3.6.1
  15. DB SQL Monitor 会话状态及等待事件监控工具
  16. npm 命令
  17. Confluence 6 MySQL 数据库设置准备
  18. 使用Jupyter Notebook编写技术文档
  19. Linux下如何查看系统启动时间和运行时间(转)
  20. (原)阅读Android-Camera2Video的demo源码和调试心得

热门文章

  1. Win7搭建Django开发环境
  2. Primefaces 中e.offset(...)问题的处理
  3. iOS 中 Touch ID得使用方法
  4. django datetime format 日期格式化
  5. visual studio 2013 使用IIS Express附加调试MVC5
  6. Problem A: 走迷宫问题
  7. python的filter()函数
  8. PhoneGap笔记-01 基本使用
  9. QT 判断当前焦点是否在某控件上(使用hasFocus函数,毕竟QT是DIRECTUI,所以这个Focus到底代表了什么呢?)
  10. perl5 第九章 关联数组/哈希表