[ASP.NET] 登入驗證機制實作練習
日前不小心看到 jeff377 這篇,登入驗證機制實作,小弟感覺受用,忍不住使用 C# 來練習一下。
環境:xp sp3 + vs2008 + asp.net 3.5
類別圖表:
IUserInfo.cs
TUserInfo.cs
TBBasePage.cs
/// 頁面基礎類別。
/// </summary>
public class TBBasePage : System.Web.UI.Page {
#region "Fields"
private const string KEY_USERINFO = "_UserInfo";
private TUserInfo _TUserInfo;
#endregion
#region " 屬性 "
/// <summary>
/// 使用者資訊。
/// </summary>
public TUserInfo UserInfo {
get {
if (this._TUserInfo == null) {
if (this.Session[KEY_USERINFO] == null) {
this._TUserInfo = new TUserInfo();
this.Session[KEY_USERINFO] = this._TUserInfo;
}
else {
this._TUserInfo = (TUserInfo)this.Session[KEY_USERINFO];
}
}
return this._TUserInfo;
}
}
/// <summary>
/// 是否做登入驗證。
/// </summary>
public virtual bool IsCheckLogin { get { return true; } }
/// <summary>
/// 登入頁面網址。
/// </summary>
public string LoginUrl {
get {
string sUrl = string.Empty;
sUrl = this.AppSettings("LoginUrl");
if (string.IsNullOrEmpty(sUrl)) {
throw new Exception("未設定登入頁面");
}
else {
return sUrl;
}
}
}
#endregion
#region " Protected Methods "
protected override void OnInit(EventArgs e) {
//判斷是否做登入驗證
if (this.IsCheckLogin) {
//判斷是否登入,若未登入則轉址到登入頁面
if (!this.UserInfo.IsLogin) {
Page.Response.Redirect(this.LoginUrl);
}
}
base.OnInit(e);
}
#endregion
#region " Public Methods "
/// <summary>
/// 取得 Web.config 中 appSettings 區段定義的參數。
/// </summary>
/// <param name="Name">要找出的項目索引鍵。</param>
public string AppSettings(string Name) {
return AppSettings(Name, string.Empty);
}
/// <summary>
/// 取得 Web.config 中 appSettings 區段定義的參數。
/// </summary>
/// <param name="Name">要找出的項目索引鍵。</param>
/// <param name="DefaultValue">若所指定的項目不存在,則回傳預設值。</param>
public string AppSettings(string Name, string DefaultValue) {
string sResult = string.Empty;
sResult = ConfigurationManager.AppSettings[Name];
if (string.IsNullOrEmpty(sResult)) {
sResult = DefaultValue;
}
return sResult;
}
#endregion
}
TBLoginPage.cs
再來就是實際操作
Web.config 設定 LoginUrl appSetting
Login 頁面配置
Login.aspx.cs
HEMiDEMi 的標籤:ASP.NET
三小俠 小弟獻醜,歡迎指教