/// <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(); }
/// <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(); }
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 { //已有用户信息 } }