public static async Task <ClaimsIdentity> GenerateUserIdentityAsync(this ASUser user, ASUserManager manager) { var userIdentity = await manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); return(userIdentity); }
public void Update(IPrincipal principal) { try { Dictionary <string, DateTime> lastActivities = (Dictionary <string, DateTime>)MemoryCache.Default.Get(CacheKeyName); if (principal.Identity.IsAuthenticated) { string user = principal.Identity.Name; if (lastActivities == null) { lastActivities = new Dictionary <string, DateTime>(); } if (!lastActivities.ContainsKey(user)) { lastActivities.Add(user, DateTime.UtcNow); } else { lastActivities[user] = DateTime.UtcNow; } if (MemoryCache.Default.Contains(CacheKeyName)) { MemoryCache.Default[CacheKeyName] = lastActivities; } else { MemoryCache.Default.Add(CacheKeyName, lastActivities, DateTimeOffset.MaxValue); } } if (lastActivities != null && DateTime.UtcNow.Subtract(lastLogTime).TotalSeconds > _settingManager.GetContainer <MembershipSetting>().Default.LastActivityTimeUpdateIntervalInSeconds) { if (_dbContext.IsInitialized) { foreach (string userName in lastActivities.Keys) { ASUser user = _dbContext.Set <ASUser>().SingleOrDefault(u => u.UserName == userName); if (user != null && lastActivities.ContainsKey(userName)) { user.LastActivity = lastActivities[userName]; _dbContext.Entry(user).State = EntityState.Modified; } } _dbContext.SaveChanges(); } lastActivities.Clear(); lastLogTime = DateTime.UtcNow; } } catch (Exception ex) { this._logger.Error(ex); } }