/// <summary>
        /// 验证
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static Task JWTValidateAsync(TokenValidatedContext context)
        {
            if (context == null)
            {
                throw new System.ArgumentNullException(nameof(context));
            }

            var userId = context.Principal.Claims.FirstOrDefault(claim => claim.Type == JwtRegisteredClaimNames.NameId || claim.Type == ClaimTypes.NameIdentifier || claim.Type == "Id")?.Value;

            if (userId == null)
            {
                context.NoResult();
                //返回 400 验证错误
                context.Response.StatusCode  = 400;
                context.Response.ContentType = "text/plain";
                context.Response.WriteAsync("Authenrize Failed-No User KeyId").Wait();
            }

            //// Get an instance using DI
            //var dbContext = context.HttpContext.RequestServices.GetRequiredService<ApplicationDbContext>();
            //var user = dbContext.Users.Find(userId);
            //if (user == null)
            //{
            //    context.NoResult();
            //    //返回 400 验证错误
            //    context.Response.StatusCode = 400;
            //    context.Response.ContentType = "text/plain";
            //    context.Response.WriteAsync("Authenrize Failed-No User Find").Wait();
            //}
            //else
            //{
            //    var SecurityStamp = context.Principal.Claims.FirstOrDefault(claim => claim.Type == JwtRegisteredClaimNames.Jti || claim.Type == "AspNet.Identity.SecurityStamp")?.Value;
            //    if(user.SecurityStamp != SecurityStamp)
            //    {
            //        context.NoResult();
            //        //返回 400 验证错误
            //        context.Response.StatusCode = 400;
            //        context.Response.ContentType = "text/plain";
            //        context.Response.WriteAsync("Authenrize Failed-User Refreshed").Wait();
            //    }
            //}
            return(Task.CompletedTask);
        }
 public override async Task TokenValidated(TokenValidatedContext context)
 {
     await Task.Run(() =>
     {
         context.NoResult();
         if (context.SecurityToken is JwtSecurityToken accessToken)
         {
             string cachedToken = _jwtService.Find(accessToken.Id);
             if (!string.IsNullOrEmpty(cachedToken))
             {
                 context.Success();
             }
             else
             {
                 context.Fail("Cannot find token in identity server");
             }
         }
     });
 }