예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="username">用户名</param>
 /// <param name="outTime">过期时间</param>
 public MaUserTicket(string username, int outTime)
 {
     m_username   = username;
     m_timeout    = outTime;
     m_expiration = DateTime.Now.AddMinutes((double)outTime);
     m_ip         = MaWebUtility.GetIP();
 }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="username">用户名</param>
 /// <param name="outTime">过期时间</param>
 /// <param name="slidingExpiration">是否启用可调过期时间</param>
 /// <param name="createPersistentCookie">是否创建持久cookie</param>
 public MaUserTicket(string username, int outTime, bool slidingExpiration, bool createPersistentCookie)
 {
     m_username               = username;
     m_timeout                = outTime;
     m_expiration             = DateTime.Now.AddMinutes((double)outTime);
     m_slidingExpiration      = slidingExpiration;
     m_createPersistentCookie = createPersistentCookie;
     m_ip = MaWebUtility.GetIP();
 }
예제 #3
0
        private void OnAuthenticate(HttpContext context)
        {
            if (context.User == null)
            {//用户是否认证
                MaUserTicket _ticket = MaSecurityHelper.GetTicketFormCookie();
                if (_ticket != null)
                {
                    if (!_ticket.Expired)
                    {
                        #region 票证有效进行延期
                        if (!string.IsNullOrEmpty(_ticket.Username))
                        {
                            bool _isDefer = false;
                            if (MaSecurityConfig.Instance.ValidateIP)
                            {     //需要验证IP
                                if (_ticket.Ip != MaWebUtility.GetIP())
                                { //ip验证不通过,退出登录
                                    MaSecurityHelper.SignOut();
                                    return;
                                }
                                else
                                {
                                    _isDefer = true;
                                }
                            }
                            //设置用户
                            Type type = System.Web.Compilation.BuildManager.GetType(MaSecurityConfig.Instance.MaPrincipalType, false, false);
                            context.User = Activator.CreateInstance(type, new object[] { _ticket.Username }) as MaPrincipal;
                            //更新过期时间
                            if (_isDefer && _ticket.SlidingExpiration)
                            {
                                //更新cookie
                                HttpContext.Current.Response.Cookies.Add(MaSecurityHelper.GetAuthCookie(_ticket));
                            }
                        }

                        #endregion
                    }
                    else
                    {
                        //登录超时
                    }
                }
            }
            else
            {
                //已有用户信息
            }
        }