300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ASP.NET Core WebAPI JWT Bearer 认证失败返回自定义数据 Json

ASP.NET Core WebAPI JWT Bearer 认证失败返回自定义数据 Json

时间:2021-07-17 09:45:31

相关推荐

ASP.NET Core WebAPI  JWT Bearer 认证失败返回自定义数据 Json

开发环境: Core Web API

目标框架:.NET Core 2.2

权限认证:JWT Bearer

提供者:成长的小猪 Jason Song

应用场景:当前我们给微信小程序提供服务接口,接口中使用了权限认证这一块,当我使用 JWT Bearer 进行接口权限认证的时候,返回的结果不是我们客户端想要的,其它我们想要给客户端返回统一的数据结构,在结果中告知客户端是不是有权限即可,但是系统默认返回的是 401Unauthorized 错误代码且不适用我们,所以我们将系统默认返回结果改变成我们自定义的数据结构,接下来看以下解决方法

默认情况返回结果是这样子的

我们想像的样子应该是这样子的

感觉太啰嗦啦,直接上代码哦

// 添加Jwt Bearer权限认证 Add by Jason.Song(成长的小猪) on /04/09// 文章来源 /jasonsongservices.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>{o.TokenValidationParameters =new TokenValidationParameters{IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(options.SecretKey)),ValidateIssuerSigningKey = true,ValidIssuer = options.ValidIssuer,ValidateIssuer = options.ValidateIssuer,ValidAudience = options.ValidAudience,ValidateAudience = options.ValidateAudience,ValidateLifetime = options.ValidateLifetime};o.Events = new JwtBearerEvents{//此处为权限验证失败后触发的事件OnChallenge = context =>{//此处代码为终止.Net Core默认的返回类型和数据结果,这个很重要哦,必须context.HandleResponse();//自定义自己想要返回的数据结果,我这里要返回的是Json对象,通过引用Newtonsoft.Json库进行转换var payload = JsonConvert.SerializeObject(new { Code = "401", Message = "很抱歉,您无权访问该接口;Jason.Song(成长的小猪)写了一个JWT权限验证失败后自定义返回Json数据对象,来源:/jasonsong" });//自定义返回的数据类型context.Response.ContentType = "application/json";//自定义返回状态码,默认为401 我这里改成 200context.Response.StatusCode = StatusCodes.Status200OK;//context.Response.StatusCode = StatusCodes.Status401Unauthorized;//输出Json数据结果context.Response.WriteAsync(payload);return Task.FromResult(0);}};});

查看我本人更多原创文章,请点击这里。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。