/// <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"); } } }); }