标签:WebApi Status Jwt Response MessageModel vs2022 new public StatusCode
1、添加验证
#region 添加验证校验 builder.Services.AddAuthentication(o => { o.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; o.DefaultChallengeScheme = nameof(ApiResponseHandler); o.DefaultForbidScheme = nameof(ApiResponseHandler); }).AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidAudience = "TestApiAdmin", ValidIssuer = "TestApiAdmin", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppsettingHelper.Get("JwtSecurityKey"))), }; }).AddScheme<AuthenticationSchemeOptions, ApiResponseHandler>(nameof(ApiResponseHandler), o => { });
2、启用验证
app.UseAuthentication(); app.UseAuthorization();
3、ApiResponseHandler类代码
public class ApiResponseHandler : AuthenticationHandler<AuthenticationSchemeOptions> { public ApiResponseHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock) { } protected override Task<AuthenticateResult> HandleAuthenticateAsync() { throw new NotImplementedException(); } protected override async Task HandleChallengeAsync(AuthenticationProperties properties) { Response.ContentType = "application/json"; Response.StatusCode = StatusCodes.Status401Unauthorized; await Response.WriteAsync(JsonConvert.SerializeObject((new ApiResponse(StatusCode.CODE401)).MessageModel)); } protected override async Task HandleForbiddenAsync(AuthenticationProperties properties) { Response.ContentType = "application/json"; Response.StatusCode = StatusCodes.Status403Forbidden; await Response.WriteAsync(JsonConvert.SerializeObject((new ApiResponse(StatusCode.CODE403)).MessageModel)); } }
public class ApiResponse { public int Status { get; set; } = 200; public string Value { get; set; } = ""; public string MessageModel { get; set; } = ""; //public MessageModel<string> MessageModel = new MessageModel<string>() { }; public ApiResponse(StatusCode apiCode, string msg = null) { switch (apiCode) { case StatusCode.CODE401: { Status = 401; Value = "很抱歉,您无权访问该接口,请确保已经登录!"; } break; case StatusCode.CODE403: { Status = 403; Value = "很抱歉,您的访问权限等级不够,联系管理员!"; } break; case StatusCode.CODE404: { Status = 404; Value = "资源不存在!"; } break; case StatusCode.CODE500: { Status = 500; Value = msg; } break; } //MessageModel = new MessageModel<string>() //{ // status = Status, // msg = Value, // success = apiCode != StatusCode.CODE200 //}; } } public enum StatusCode { CODE200, CODE401, CODE403, CODE404, CODE500 }
标签:WebApi,Status,Jwt,Response,MessageModel,vs2022,new,public,StatusCode 来源: https://www.cnblogs.com/wenghan/p/16120520.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。