asp.net BasePage類(lèi)+Session通用用戶(hù)登錄權(quán)限控制
protected void Page_Load(object sender, EventArgs e)
{}
里面來(lái)寫(xiě)代碼,甚至在某些按鈕里面寫(xiě)判斷session是否存在~~
這樣當(dāng)然是能實(shí)現(xiàn)效果的,問(wèn)題就在,如果有1000個(gè)頁(yè)面~~你需ctrl+C。。。Ctrl+V 很多次~~~
我的思路就是寫(xiě)一個(gè)BasePage類(lèi)繼承 System.Web.UI.Page
public class BasePage : System.Web.UI.Page
{
//pageunload事件,并不是指瀏覽器關(guān)閉,而是指頁(yè)面關(guān)閉,所以刷新的時(shí)候,依然會(huì)執(zhí)行以下事件
protected void Page_Unload(object sender, EventArgs e)
{
}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (!SessionData.IsLogin())
{//這里寫(xiě) 跳轉(zhuǎn)到登陸頁(yè)面:例如:
Response.Redirect(string.Format("~/ReLogin.aspx?Page={0}", Request.Path));
}}
為什么我這里要帶 Page 參數(shù),就是為了在登錄成功以后可以返回到登錄前的那一個(gè)頁(yè)面
另外我也貢獻(xiàn)一個(gè)SessionData類(lèi):
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ù),在該類(lèi)管理
/// </summary>
public class SessionData
{
/// <summary>
/// 獲取session 中的 用戶(hù)信息
/// </summary>
/// <returns></returns>
public static MdlSessionCustomerInfo GetUserInfo()
{
MdlSessionCustomerInfo userInfo = SessionManager<MdlSessionCustomerInfo>.GetSessionObject(SessionKey.UserInfo);
if (userInfo == null)
{
userInfo = new MdlSessionCustomerInfo();
//把內(nèi)容儲(chǔ)存到應(yīng)用程序
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
return userInfo;
}
/// <summary>
/// 重新設(shè)置session 中的用戶(hù)信息
/// </summary>
/// <param name="userInfo"></param>
public static void SetUserInfo(MdlSessionCustomerInfo userInfo)
{
SessionManager<MdlSessionCustomerInfo>.SetSessionObject(SessionKey.UserInfo, userInfo);
}
/// <summary>
/// 清楚session中用戶(hù)信息
/// </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
相關(guān)文章
c# static 靜態(tài)數(shù)據(jù)成員
靜態(tài)成員屬于類(lèi)所有,為各個(gè)類(lèi)的實(shí)例所公用,無(wú)論類(lèi)創(chuàng)建了幾多實(shí)例,類(lèi)的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。2009-06-06Visual studio 2017添加引用時(shí)報(bào)錯(cuò)未能正確加載ReferenceManagerPackage包的解決方法
這篇文章主要介紹了VS2017添加引用時(shí)報(bào)錯(cuò)未能正確加載ReferenceManagerPackage包的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04ASP.NET中 script runat server 的用法
這篇文章主要介紹了ASP.NET中<script runat="server">的用法,以一個(gè)較為簡(jiǎn)單的例子分析了ASP.NET中<script runat="server">的特點(diǎn)及具體用法,對(duì)于asp.net初學(xué)者來(lái)說(shuō)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11ASP.NET中Dictionary基本用法實(shí)例分析
這篇文章主要介紹了ASP.NET中Dictionary基本用法,結(jié)合實(shí)例形式分析了Dictionary的基本功能、使用步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-08-08ASP.NET操作MySql數(shù)據(jù)庫(kù)的實(shí)例代碼講解
這篇文章主要介紹了ASP.NET操作MySql數(shù)據(jù)庫(kù)的實(shí)例代碼講解,需要的朋友可以參考下2016-12-12asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
這篇文章主要介紹了asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法 ,需要的朋友可以參考下2014-10-10ASP.NET Core中Grpc通信的簡(jiǎn)單用法
這篇文章介紹了ASP.NET Core中Grpc通信的簡(jiǎn)單用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07.Net?Core讀取文件時(shí)中文亂碼問(wèn)題的解決方法分享
所以關(guān)于讀取文件亂碼的問(wèn)題,百度上有很多方案,這里再給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于.Net?Core讀取文件時(shí)中文亂碼問(wèn)題的解決方法,需要的朋友可以參考下2022-02-02ASP.NET Repeater 單雙行數(shù)據(jù)換色示例
ASP.NET Repeater 單雙行數(shù)據(jù)換色根據(jù)點(diǎn)擊Repeater的ItemCreated觸發(fā)事件來(lái)時(shí)實(shí)現(xiàn)換色2014-10-10asp.net數(shù)據(jù)綁定DataBind使用方法
asp.net數(shù)據(jù)綁定DataBind使用方法,大家參考使用吧2013-12-12