asp.net BasePage類+Session通用用戶登錄權(quán)限控制
更新時間:2010年05月22日 13:52:33 作者:
判斷用戶是否登錄,常用的方法就是通過Session來控制。
但是很多人都喜歡在
protected void Page_Load(object sender, EventArgs e)
{}
里面來寫代碼,甚至在某些按鈕里面寫判斷session是否存在~~
這樣當(dāng)然是能實現(xiàn)效果的,問題就在,如果有1000個頁面~~你需ctrl+C。。。Ctrl+V 很多次~~~
我的思路就是寫一個BasePage類繼承 System.Web.UI.Page
public class BasePage : System.Web.UI.Page
{
//pageunload事件,并不是指瀏覽器關(guān)閉,而是指頁面關(guān)閉,所以刷新的時候,依然會執(zhí)行以下事件
protected void Page_Unload(object sender, EventArgs e)
{
}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (!SessionData.IsLogin())
{//這里寫 跳轉(zhuǎn)到登陸頁面:例如:
Response.Redirect(string.Format("~/ReLogin.aspx?Page={0}", Request.Path));
}}
為什么我這里要帶 Page 參數(shù),就是為了在登錄成功以后可以返回到登錄前的那一個頁面
另外我也貢獻一個SessionData類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ExpressPlatform.Common;
namespace ExpressPlatform.Web.AppCode
{
public class SessionKey
{
public const string UserInfo = "user";
}
/// <summary>
/// 所有session中的數(shù)據(jù),在該類管理
/// </summary>
public class SessionData
{
/// <summary>
/// 獲取session 中的 用戶信息
/// </summary>
/// <returns></returns>
public static MdlSessionCustomerInfo GetUserInfo()
{
MdlSessionCustomerInfo userInfo = SessionManager<MdlSessionCustomerInfo>.GetSessionObject(SessionKey.UserInfo);
if (userInfo == null)
{
userInfo = new MdlSessionCustomerInfo();
//把內(nèi)容儲存到應(yīng)用程序
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
return userInfo;
}
/// <summary>
/// 重新設(shè)置session 中的用戶信息
/// </summary>
/// <param name="userInfo"></param>
public static void SetUserInfo(MdlSessionCustomerInfo userInfo)
{
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
/// <summary>
/// 清楚session中用戶信息
/// </summary>
public static void ClearUserInfo()
{
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, null);
}
/// <summary>
/// 是否登入
/// </summary>
/// <returns></returns>
public static bool IsLogin()
{
bool ret = false;
MdlSessionCustomerInfo userInfo = SessionManager<MdlSessionCustomerInfo>.GetSessionObject(SessionKey.UserInfo);
if (userInfo != null)
ret = true;
return ret;
}
}
}
public class BasePage : System.Web.UI.Page
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{}
里面來寫代碼,甚至在某些按鈕里面寫判斷session是否存在~~
這樣當(dāng)然是能實現(xiàn)效果的,問題就在,如果有1000個頁面~~你需ctrl+C。。。Ctrl+V 很多次~~~
我的思路就是寫一個BasePage類繼承 System.Web.UI.Page
復(fù)制代碼 代碼如下:
public class BasePage : System.Web.UI.Page
{
//pageunload事件,并不是指瀏覽器關(guān)閉,而是指頁面關(guān)閉,所以刷新的時候,依然會執(zhí)行以下事件
protected void Page_Unload(object sender, EventArgs e)
{
}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (!SessionData.IsLogin())
{//這里寫 跳轉(zhuǎn)到登陸頁面:例如:
Response.Redirect(string.Format("~/ReLogin.aspx?Page={0}", Request.Path));
}}
為什么我這里要帶 Page 參數(shù),就是為了在登錄成功以后可以返回到登錄前的那一個頁面
另外我也貢獻一個SessionData類:
復(fù)制代碼 代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ExpressPlatform.Common;
namespace ExpressPlatform.Web.AppCode
{
public class SessionKey
{
public const string UserInfo = "user";
}
/// <summary>
/// 所有session中的數(shù)據(jù),在該類管理
/// </summary>
public class SessionData
{
/// <summary>
/// 獲取session 中的 用戶信息
/// </summary>
/// <returns></returns>
public static MdlSessionCustomerInfo GetUserInfo()
{
MdlSessionCustomerInfo userInfo = SessionManager<MdlSessionCustomerInfo>.GetSessionObject(SessionKey.UserInfo);
if (userInfo == null)
{
userInfo = new MdlSessionCustomerInfo();
//把內(nèi)容儲存到應(yīng)用程序
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
return userInfo;
}
/// <summary>
/// 重新設(shè)置session 中的用戶信息
/// </summary>
/// <param name="userInfo"></param>
public static void SetUserInfo(MdlSessionCustomerInfo userInfo)
{
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
/// <summary>
/// 清楚session中用戶信息
/// </summary>
public static void ClearUserInfo()
{
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, null);
}
/// <summary>
/// 是否登入
/// </summary>
/// <returns></returns>
public static bool IsLogin()
{
bool ret = false;
MdlSessionCustomerInfo userInfo = SessionManager<MdlSessionCustomerInfo>.GetSessionObject(SessionKey.UserInfo);
if (userInfo != null)
ret = true;
return ret;
}
}
}
復(fù)制代碼 代碼如下:
public class BasePage : System.Web.UI.Page
相關(guān)文章
c# static 靜態(tài)數(shù)據(jù)成員
靜態(tài)成員屬于類所有,為各個類的實例所公用,無論類創(chuàng)建了幾多實例,類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。2009-06-06Visual studio 2017添加引用時報錯未能正確加載ReferenceManagerPackage包的解決方法
這篇文章主要介紹了VS2017添加引用時報錯未能正確加載ReferenceManagerPackage包的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET中 script runat server 的用法
這篇文章主要介紹了ASP.NET中<script runat="server">的用法,以一個較為簡單的例子分析了ASP.NET中<script runat="server">的特點及具體用法,對于asp.net初學(xué)者來說具有一定的參考借鑒價值,需要的朋友可以參考下2014-11-11ASP.NET操作MySql數(shù)據(jù)庫的實例代碼講解
這篇文章主要介紹了ASP.NET操作MySql數(shù)據(jù)庫的實例代碼講解,需要的朋友可以參考下2016-12-12asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
這篇文章主要介紹了asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法 ,需要的朋友可以參考下2014-10-10ASP.NET Repeater 單雙行數(shù)據(jù)換色示例
ASP.NET Repeater 單雙行數(shù)據(jù)換色根據(jù)點擊Repeater的ItemCreated觸發(fā)事件來時實現(xiàn)換色2014-10-10asp.net數(shù)據(jù)綁定DataBind使用方法
asp.net數(shù)據(jù)綁定DataBind使用方法,大家參考使用吧2013-12-12