通用權限案例平臺--登陸認證

通用權限管理系統平臺採用Froms認證方式實現對用戶登陸,爲解決session超時問題,致使用戶重複登陸的問題,系統採用cookies保存,並實現靈活保存登陸信息。web

實現Forms認證,須要在web.config增長配置項cookie

 <authentication mode="Forms">
        <forms loginUrl="~/Home/LogOn" timeout="2880" slidingExpiration="true" cookieless="UseCookies"/>
        <!--採用滑動時間-->
    </authentication>    session

自定義實現Authentication類,並實現建立登陸用戶的票據信息方法less

/// <summary>
        /// 建立登陸用戶的票據信息  
        /// </summary>
        /// <param name="strUserName"></param>
        /// <param name="strPassword"></param>
        /// <param name="strIP"></param>
   
        public static void CreateLoginUserTicket(string strUserName, string strPassword,string strIP)  
        {  
            //構造Form驗證的票據信息   
            TUserDo mUserEntity=new TUserDo();
            Filter filter = Filter.Null;
            filter.And(Filter.Eq("LoginId", strUserName.Trim()));
            filter.And(Filter.Eq("Password", Common.Md5Encrypt(strPassword.Trim())));
            filter.And(Filter.Eq("IsDelete", "0"));
            filter.And(Filter.Eq("IsUser", "0"));
            List<TUserDo> list = DataAccess.FindByFilter<TUserDo>(filter);
            if(list.Count>0)
            {
                mUserEntity=list[0];
            }

            int expires = ConvertData.ToInt(System.Configuration.ConfigurationManager.AppSettings["CookiesExpires"].ToString().Trim(), 1);
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, mUserEntity.UserGuid, DateTime.Now, DateTime.Now.AddHours(expires),
                true, string.Format("{0}",strIP), FormsAuthentication.FormsCookiePath);           
 
            string ticString = FormsAuthentication.Encrypt(ticket);
 
            //把票據信息寫入Cookie和Session   
            //SetAuthCookie方法用於標識用戶的Identity狀態爲true   

            #region Cookies            

            HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, ticString));
            HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = System.DateTime.Now.AddHours(expires);
            FormsAuthentication.SetAuthCookie(mUserEntity.UserGuid, true);
            #endregion Cookies
            //HttpContext.Current.Session[EAPConst.eap_ipAdress] = strIP;
            //HttpContext.Current.Items[EAPConst.eap_ipAdress] = strIP;
            
            //重寫HttpContext中的用戶身份,能夠封裝自定義角色數據;
            HttpContext.Current.Response.Cookies.Add(new HttpCookie(EAPConst.eap_Adress, ticket.UserData));
            HttpContext.Current.Response.Cookies[EAPConst.eap_Adress].Expires = System.DateTime.Now.AddHours(expires);

            string[] info = ticket.UserData.Split(',');  
            IIdentity identity = new FormsIdentity(ticket);
            IPrincipal principal = new GenericPrincipal(identity, info);  
            HttpContext.Current.User = principal;  
        } ide

 

/// <summary>   
        /// 用戶註銷執行的操做   
        /// </summary>   
        public static void Logout()  
        {
            System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Values.Clear();
            FormsAuthentication.SignOut();  
        }    ui

}orm

登陸認證直接調用該方法進行認證。ip

相關文章
相關標籤/搜索