| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using Abp.BackgroundJobs;
- using Abp.Domain.Repositories;
- using Abp.Domain.Uow;
- using Abp.Extensions;
- using Abp.Threading.BackgroundWorkers;
- using Abp.Threading.Timers;
- using Abp.Timing;
- using VberZero.BaseSystem.MultiTenancy;
- using VberZero.BaseSystem.Users;
- namespace VberZero.Authorization.Users;
- /// <summary>
- /// UserToken 过期工作者
- /// </summary>
- public class UserTokenExpirationWorker : PeriodicBackgroundWorkerBase
- {
- private readonly IRepository<UserToken, long> _userTokenRepository;
- private readonly IRepository<Tenant> _tenantRepository;
- private readonly IUnitOfWorkManager _unitOfWorkManager;
- public UserTokenExpirationWorker(
- AbpTimer timer,
- IRepository<UserToken, long> userTokenRepository,
- IBackgroundJobConfiguration backgroundJobConfiguration,
- IUnitOfWorkManager unitOfWorkManager,
- IRepository<Tenant> tenantRepository)
- : base(timer)
- {
- _userTokenRepository = userTokenRepository;
- _unitOfWorkManager = unitOfWorkManager;
- _tenantRepository = tenantRepository;
- Timer.Period = backgroundJobConfiguration.UserTokenExpirationPeriod?.TotalMilliseconds.To<int>()
- //?? backgroundJobConfiguration.CleanUserTokenPeriod
- ?? TimeSpan.FromHours(1).TotalMilliseconds.To<int>();
- }
- protected override void DoWork()
- {
- try
- {
- List<int> tenantIds;
- var utcNow = Clock.Now.ToUniversalTime();
- using (var uow = _unitOfWorkManager.Begin())
- {
- using (_unitOfWorkManager.Current.SetTenantId(null))
- {
- _userTokenRepository.Delete(t => t.ExpireDate <= utcNow);
- tenantIds = _tenantRepository.GetAll().Select(t => t.Id).ToList();
- uow.Complete();
- }
- }
- foreach (var tenantId in tenantIds)
- {
- using var uow = _unitOfWorkManager.Begin();
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- _userTokenRepository.Delete(t => t.ExpireDate <= utcNow);
- uow.Complete();
- }
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- }
- }
|