/// <summary> /// 刷新指定Session状态(改变此Session最近的活动时间为当前时间, 若为预登出则并重设SessionEvent) /// </summary> public void RefreshState() { lock (this) { this._lastActiveTime = DateTime.Now.ToString(); if (SessionEvent == UserSessionEventEnum.PrepTimeout && (_logonInfo.AuthType == LoginTypeEnum.PCClient || _logonInfo.AuthType == LoginTypeEnum.PCIE)) { SessionEvent = UserSessionEventEnum.Login; } } }
/// <summary> /// 用户注销或者页面超时时释放用户状态对象 /// </summary> /// <param name="passCode"></param> /// <param name="sessionEvent">触发事件方式</param> /// <returns></returns> public bool ReleaseSession(string sessionID, UserSessionEventEnum sessionEvent) { UserSession userSession = (UserSession)_sessions[sessionID]; userSession.SessionEvent = sessionEvent; // 若触发事件为logout(主动登出), 则若登入方式为未知的话,则放弃登出 if (sessionEvent == UserSessionEventEnum.Logout && userSession.SessionEvent != UserSessionEventEnum.Login) { // return false; } if (userSession != null) { /*--写事件日志开始--*/ SysEvent evt = new SysEvent(); evt.UserID = userSession.User.UserID; evt.LoginName = userSession.User.LoginName; evt.IP = userSession.LogonInfo.IP; evt.Record = String.Format("ReleaseSession({0}, {1})", sessionID, sessionEvent.ToString()); evt.DoCreate(); /*--写事件日志结束--*/ lock (_sessions) { _sessions.Remove(sessionID); } return(true); } else { return(false); } }
/// <summary> /// 创建新的用户Session /// </summary> /// <param name="userID"></param> /// <param name="ip"></param> /// <param name="mac"></param> /// <param name="stateEvent"></param> /// <param name="sessionEvent">触发创建的事件类型</param> /// <returns></returns> public UserSession CreateSession(string userID, string ip, string mac, LoginTypeEnum authType, UserSessionEventEnum sessionEvent) { UserSession session = new UserSession(userID); session.LogonInfo.IP = ip; session.LogonInfo.MAC = mac; session.LogonInfo.AuthType = authType; session.SessionEvent = sessionEvent; try { lock (_sessions) { _sessions.Add(session.SessionID, session); } } catch (Exception) { } /*--写事件日志开始--*/ SysEvent evt = new SysEvent(); evt.UserID = session.User.UserID; evt.LoginName = session.User.LoginName; evt.IP = session.LogonInfo.IP; evt.Record = String.Format("CreateSession({0}, {1}, {2}, {3})", userID, ip, authType.ToString(), sessionEvent.ToString()); evt.DoCreate(); /*--写事件日志结束--*/ return(session); }