public virtual async Task <TokenModel> CreateAccessTokenAsync(string user_uid) { user_uid.Should().NotBeNullOrEmpty("create access token subject id"); var now = DateTime.UtcNow; //create new token var token = new AuthTokenEntity() { ExpiryTimeUtc = now + TimeSpan.FromDays(this.TokenExpireDays), RefreshToken = Com.GetUUID(), UserUID = user_uid }.InitSelf("token"); if (!token.IsValid(out var msg)) { throw new MsgException(msg); } await this._tokenRepo.AddAsync(token); var token_data = this.Parse(token); return(token_data); }
public static AuthToken ToDomainModel(this AuthTokenEntity authTokenEntity) { return(new AuthToken(authTokenEntity.UserId) .WithAuthTokenValue(authTokenEntity.Token) .WithCreatedOn(authTokenEntity.CreatedOn) .WithExpiresOn(authTokenEntity.ExpiresOn)); }
protected virtual TokenModel Parse(AuthTokenEntity token) => new TokenModel() { UserUID = token.UserUID, AccessToken = token.UID, ExtData = token.ExtData, ExpireUtc = token.ExpiryTimeUtc, };
public static void IsValid(this AuthTokenEntity entity, string token) { if (entity == null) { throw Errors.ValueDoesNotExist("token", token); } if (entity.ExpiresOn < DateTime.UtcNow) { throw Errors.ExpiredToken(token); } }
public bool InsertTokenForUser(UserEntity user, AuthTokenEntity authToken) { var existing = Users.SingleOrDefault(u => u.ApplicationKey == user.ApplicationKey); if (existing == null) { return(false); } existing.AuthToken = authToken; File.WriteAllText( GetDatabaseFilePath(), JsonConvert.SerializeObject(Users, Formatting.Indented)); return(true); }
/// <summary> /// 剩余过期时间小于总有效时间的一半就自动刷新 /// </summary> /// <param name="token"></param> /// <param name="now"></param> /// <returns></returns> protected virtual bool NeedRefresh(AuthTokenEntity token, DateTime now) => Math.Abs((token.ExpiryTimeUtc - now).TotalDays) < (this.TokenExpireDays / 2.0);
public async Task SaveAsync(AuthTokenEntity authTokenEntity) { Func <string, AuthTokenEntity, AuthTokenEntity> func = (k, oldValue) => authTokenEntity; _tokens.AddOrUpdate(authTokenEntity.Token, authTokenEntity, func); }