[ASP.NET] 登入驗證機制實作練習

  • 6369
  • 0

[ASP.NET] 登入驗證機制實作練習

日前不小心看到 jeff377 這篇,登入驗證機制實作,小弟感覺受用,忍不住使用 C# 來練習一下。

環境:xp sp3 + vs2008 + asp.net 3.5

 

類別圖表:

2011-01-07_090719

 

IUserInfo.cs

IUserInfo

 

TUserInfo.cs

TUserInfo

 

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

TBLoginPage

 

再來就是實際操作

Web.config 設定 LoginUrl appSetting

Web.config

 

Login 頁面配置

Login

 

Login.aspx.cs

2011-01-07_092424

 

HEMiDEMi 的標籤:

三小俠  小弟獻醜,歡迎指教