在写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方法再页面生命周期中的执行顺序。

05-16 23:17