zoukankan      html  css  js  c++  java
  • 通用权限案例平台--登录认证

    通用权限管理系统平台采用Froms认证方式实现对用户登录,为解决session超时问题,导致用户重复登录的问题,系统采用cookies保存,并实现灵活保存登录信息。

    实现Forms认证,需要在web.config增加配置项

     <authentication mode="Forms">
            <forms loginUrl="~/Home/LogOn" timeout="2880" slidingExpiration="true" cookieless="UseCookies"/>
            <!--采用滑动时间-->
        </authentication>   

    自定义实现Authentication类,并实现创建登录用户的票据信息方法

    /// <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;  
            }

    /// <summary>   
            /// 用户注销执行的操作   
            /// </summary>   
            public static void Logout()  
            {
                System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Values.Clear();
                FormsAuthentication.SignOut();  
            }   

    }

    登录认证直接调用该方法进行认证。

  • 相关阅读:
    B
    A
    【转】通过身边小事解释机器学习是什么?
    【转】什么是无监督学习?
    机器学习中的监督学习和无监督学习
    经典传染病传播模型
    复杂网络的主要研究内容
    网络科学导论【第一章】读书脑图
    无标度网络模型
    小世界网络模型
  • 原文地址:https://www.cnblogs.com/hn731/p/3292766.html
Copyright © 2011-2022 走看看