diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentitySessionRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentitySessionRepository.cs index dc11edbcfe..818da4c02b 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentitySessionRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentitySessionRepository.cs @@ -14,10 +14,12 @@ namespace Volo.Abp.Identity.EntityFrameworkCore; public class EfCoreIdentitySessionRepository : EfCoreRepository, IIdentitySessionRepository { - public EfCoreIdentitySessionRepository(IDbContextProvider dbContextProvider) + protected IClock Clock { get; } + + public EfCoreIdentitySessionRepository(IDbContextProvider dbContextProvider, IClock clock) : base(dbContextProvider) { - + Clock = clock; } public virtual async Task FindAsync(string sessionId, CancellationToken cancellationToken = default) @@ -89,7 +91,7 @@ public class EfCoreIdentitySessionRepository : EfCoreRepository().Now; - await DeleteDirectAsync(x => x.LastAccessed == null || x.LastAccessed < now.Subtract(inactiveTimeSpan), cancellationToken: cancellationToken); + var inactiveTime = Clock.Now.Subtract(inactiveTimeSpan); + await DeleteDirectAsync(x => (x.LastAccessed ?? x.SignedIn) < inactiveTime, cancellationToken: cancellationToken); } } diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentitySessionRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentitySessionRepository.cs index eb3f99e688..2a5f7049ec 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentitySessionRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentitySessionRepository.cs @@ -15,10 +15,12 @@ namespace Volo.Abp.Identity.MongoDB; public class MongoIdentitySessionRepository : MongoDbRepository, IIdentitySessionRepository { - public MongoIdentitySessionRepository(IMongoDbContextProvider dbContextProvider) + protected IClock Clock { get; } + + public MongoIdentitySessionRepository(IMongoDbContextProvider dbContextProvider, IClock clock) : base(dbContextProvider) { - + Clock = clock; } public virtual async Task FindAsync(string sessionId, CancellationToken cancellationToken = default) @@ -93,7 +95,7 @@ public class MongoIdentitySessionRepository : MongoDbRepository().Now; - await DeleteDirectAsync(x => x.LastAccessed == null || x.LastAccessed < now.Subtract(inactiveTimeSpan), cancellationToken: cancellationToken); + var inactiveTime = Clock.Now.Subtract(inactiveTimeSpan); + await DeleteDirectAsync(x => (x.LastAccessed ?? x.SignedIn) < inactiveTime, cancellationToken: cancellationToken); } }