void LogOutSessionAsync(string sessionId) { new Thread(new ThreadStart(() => { using (var db = new AlumniDbContext()) { try { var session = db.UserSessions.Where(s => s.SessionId == sessionId) .ToList().Last(); if (session != null) { session.End = DateTime.UtcNow; db.SaveChanges(); } } catch { } } })).Start(); }
void LogSessionAsync(string browser, string ip, User user, string sessionId) { new Thread(new ThreadStart(() => { try { using (var db = new AlumniDbContext()) { var session = new Session(); session.Browser = browser; session.IPAddress = ip; session.UserName = user.FullName; session.Start = DateTime.UtcNow; session.UserId = user.UserId; session.SessionId = sessionId; var pastActSession = db.UserSessions.Where(s => s.UserId == user.UserId && s.End == null && s.IPAddress == ip); foreach (var item in pastActSession) { item.End = DateTime.UtcNow; db.Entry(item).State = System.Data.EntityState.Modified; } db.UserSessions.Add(session); db.SaveChanges(); } } catch { } })).Start(); }
private static SessionUserInfo GetCurrentUserInfo() { var httpContext = System.Web.HttpContext.Current; var userId = httpContext.Session[SessionKeys.CurrentUserId]; if (userId == null) { var context = System.Web.HttpContext.Current; var request = System.Web.HttpContext.Current.Request; HttpCookie authCookie = request.Cookies[FormsAuthentication.FormsCookieName]; if (authCookie != null) { FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); var roles = authTicket.UserData.Split('|'); using (var db = new AlumniDbContext()) { var user = db.Users.Find(int.Parse(authTicket.Name)); if (user == null) { return null; } userId = user.UserId; UserSession.UpdateCurrentUser(user.FullName, authTicket.Name); } } } return new SessionUserInfo { Id = int.Parse(userId.ToString()), Name = httpContext.Session[SessionKeys.CurrentUserName] as string }; }