コード例 #1
0
ファイル: ASUserExtension.cs プロジェクト: tomatoe45/ASAdmin
        public static async Task <ClaimsIdentity> GenerateUserIdentityAsync(this ASUser user, ASUserManager manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(user,
                                                                 DefaultAuthenticationTypes.ApplicationCookie);

            return(userIdentity);
        }
コード例 #2
0
        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);
            }
        }