在写b/s框架的系统的时候,我们会发现,我们经常会在不同的网页中验证Session是否存在,,而我这里没有用Session,用的是MemCache技术,其实它就是键值对。

只不过将Memcache中的键,当Cookies中的值存储,然后,验证的时候,返回一步一步获取Memcache中的值。

为了不用每次判断Cookies["sessionid"]是否存在,我们可以把复用代码写在system.Web.UI.Page中的OnInit中,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
   public class CheckSessionInfo:System.Web.UI.Page
    {
       public BookShop.Model.User LoginUser { get; set; }
       protected override void OnInit(EventArgs e)
       {
           if (Request.Cookies["sessionId"] != null)//判断存储自己定义的sessionId的值是否为空
           {
               string sessionId = Request.Cookies["sessionId"].Value;
               //从缓存中取出对应的值.
              object obj= Common.MemcacheHelper.Get(sessionId);
              if (obj != null)
              {
                  LoginUser = obj as BookShop.Model.User;//获取登录用户信息
                  //重新赋值.(滑动过期时间)
                 // Common.MemcacheHelper.Set(sessionId, obj, DateTime.Now.AddMinutes(20));
              }
              else
              {
                  Common.WebCommon.GoPage();
              }

           }
           else
           {
               Common.WebCommon.GoPage();
           }
           base.OnInit(e);
       }
    }
}


当你在创建其他类时,只要继承CheckUserInfo类。不过,希望你看了之后,重视OnInit();

http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.100).aspx 这个网址说的是

ASP.NET 页生命周期概述

 大家可以从msdn了解,Oninit方法再页面生命周期中的执行顺序。

 

posted on 2014-05-15 23:15  新猪先生  阅读(679)  评论(0编辑  收藏  举报