public static string IssueJWT(CustomPayloadModel model)
        {
            DateTime     dateTime = DateTime.Now;
            string       iss      = Appsettings.app(new string[] { "Audience", "Issuer" });
            string       aud      = Appsettings.app(new string[] { "Audience", "Audience" });
            string       secret   = Appsettings.app(new string[] { "Audience", "Secret" });
            List <Claim> claims   = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Jti, model.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, (new DateTimeOffset(dateTime).ToUnixTimeSeconds()).ToString()),
                new Claim(JwtRegisteredClaimNames.Nbf, (new DateTimeOffset(dateTime).ToUnixTimeSeconds()).ToString()),
                new Claim(JwtRegisteredClaimNames.Exp, (new DateTimeOffset(dateTime).AddDays(7).ToUnixTimeSeconds()).ToString()),
                new Claim(ClaimTypes.Expiration, DateTime.Now.AddDays(7).ToString()),
                new Claim(JwtRegisteredClaimNames.Iss, iss),
                new Claim(JwtRegisteredClaimNames.Aud, aud),
            };

            claims.AddRange(model.Roles.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var jwt   = new JwtSecurityToken(
                issuer: iss,
                claims: claims,
                signingCredentials: creds
                );
            var jwtHandler  = new JwtSecurityTokenHandler();
            var encoderdJWT = jwtHandler.WriteToken(jwt);

            return(encoderdJWT);
        }
        public static CustomPayloadModel SeriallzeJwt(string jwtStr)
        {
            var jwtHandler            = new JwtSecurityTokenHandler();
            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
            object           role     = new object();

            Guid.TryParse(jwtToken.Id, out Guid Id);
            try
            {
                jwtToken.Payload.TryGetValue(ClaimTypes.Role, out role);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            var model = new CustomPayloadModel
            {
                Id    = Id,
                Roles = role != null?role.ToString() : string.Empty,
            };

            return(model);
        }