/// <summary> /// 创建refreshToken /// </summary> /// <param name="context">上下文</param> /// <returns></returns> public override void Create(AuthenticationTokenCreateContext context) { if (string.IsNullOrEmpty(context.Ticket.Identity.Name)) { return; } var refreshTokenLifeTime = ConfigHelper.GetValue("TokenExpireMinute", "120"); if (string.IsNullOrEmpty(refreshTokenLifeTime)) { return; } // generate access token var refreshTokenId = new RegularGuidGenerator().Create(); context.Ticket.Properties.IssuedUtc = DateTime.UtcNow; context.Ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddMinutes(double.Parse(refreshTokenLifeTime)); var cmd = new SaveTokenCommand() { RefreshTokenId = refreshTokenId, UserId = new Guid(context.Ticket.Identity.Name), IssuedUtc = DateTime.Parse(context.Ticket.Properties.IssuedUtc.ToString()), ExpiresUtc = DateTime.Parse(context.Ticket.Properties.ExpiresUtc.ToString()), ProtectedTicket = context.SerializeTicket() }; // Token没有过期的情况强行刷新,删除老的Token保存新的Token _commandBus.Send(cmd); context.SetToken(refreshTokenId.ToString()); }
public ApiKeysVm() { Tokens = new Tokens(); SaveTokenCommand = new SaveTokenCommand(this); }