Exemple #1
0
        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));
 }
Exemple #3
0
        protected virtual TokenModel Parse(AuthTokenEntity token) => new TokenModel()
        {
            UserUID     = token.UserUID,
            AccessToken = token.UID,

            ExtData = token.ExtData,

            ExpireUtc = token.ExpiryTimeUtc,
        };
Exemple #4
0
        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);
        }
Exemple #6
0
 /// <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);
Exemple #7
0
        public async Task SaveAsync(AuthTokenEntity authTokenEntity)
        {
            Func <string, AuthTokenEntity, AuthTokenEntity> func = (k, oldValue) => authTokenEntity;

            _tokens.AddOrUpdate(authTokenEntity.Token, authTokenEntity, func);
        }