Asp.net 基于Cookie简易的权限判断

  写入Cookie页面,创建cookie后,设置cookie属性,并添加到Response.Cookies中读取cookie,利用cookie的名字或索引从Request.Cookies中取得改写Cookie,先创建一个同名的cookie,读取Request中同名的cookie,把读取cookie的属性值付给新的对象,加入到Response.Cookies中创建一个BasePage页面,其他的页面继承自这个页面,把权限判断的代码有单个页面的Page_Load转移到BasePage的PreLoad中,下面是BasePage的主要代码

  

复制代码 代码如下:

  public class BasePage : System.Web.UI.Page

  {

  private string pageName;

  public BasePage()

  {

  this.Page.PreLoad += Page_Load;

  }

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  Uri r = this.Request.Url;

  pageName = r.AbsolutePath;

  if (NeedToCheck())

  {

  if (!HasAuthentication())

  {

  HttpContext.Current.Response.Redirect("NoAuthenticationPage.aspx");

  }

  }

  }

  }

  private bool NeedToCheck()

  {

  if (pageName.Contains("NoAuthenticationPage.aspx") || pageName == "Login.aspx" )

  {

  return false;

  }

  return true;

  }

  private bool HasAuthentication()

  {

  //look into the config file or database,to see whether this page is in the allow accessing list of the role or not;

  //the signature of the function is like this

  //QueryInConfig(m_UserRole,pageName);

  if (pageName.Contains("Default3.aspx") && UserRole == "2")

  {

  return false;

  }

  return true;

  }

  protected HttpCookie _RequestCookie;

  protected HttpCookie _ResponseCookie;

  private bool b_IsNewCookie = true;

  public string UserRole

  {

  get

  {

  return GetCookieValue("UserRole");

  }

  set

  {

  SetCookieValue("UserRole", value);

  }

  }

  public string UserName

  {

  get

  {

  return GetCookieValue("UserName");

  }

  set

  {

  SetCookieValue("UserName", value);

  }

  }

  protected void SetCookieValue(string name, string value)

  {

  SetResponseCookie();

  _ResponseCookie[name] = value;

  }

  private string GetCookieValue(string name)

  {

  SetReqeustCookie();

  if (_RequestCookie != null)

  {

  return _RequestCookie[name];

  }

  return null;

  }

  protected void SetReqeustCookie()

  {

  _RequestCookie = HttpContext.Current.Request.Cookies["Cookie_Name"];

  }

  protected void SetResponseCookie()

  {

  if (b_IsNewCookie)

  {

  HttpContext.Current.Response.Cookies.Remove("Cookie_Name");

  _ResponseCookie = new HttpCookie("Cookie_Name");

  DateTime dtNow = DateTime.Now;

  TimeSpan tsMinute = new TimeSpan(0, 2, 0, 0);

  _ResponseCookie.Expires = dtNow + tsMinute;

  _ResponseCookie["UserRole"] = UserRole;

  _ResponseCookie["UserName"] = UserName;

  HttpContext.Current.Response.Cookies.Add(_ResponseCookie);

  b_IsNewCookie = false;

  }

  }

  }