39 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
| using IRaCIS.Core.Infrastructure.Extention;
 | |
| using Microsoft.AspNetCore.Authentication;
 | |
| using Microsoft.AspNetCore.Http;
 | |
| using Microsoft.Extensions.Logging;
 | |
| using Microsoft.Extensions.Options;
 | |
| using Newtonsoft.Json;
 | |
| using System;
 | |
| using System.Text.Encodings.Web;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace IRaCIS.Core.API
 | |
| {
 | |
|     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(ResponseOutput.NotOk("您无权访问该接口", ApiResponseCodeEnum.NoToken)));
 | |
|         }
 | |
| 
 | |
|         protected override async Task HandleForbiddenAsync(AuthenticationProperties properties)
 | |
|         {
 | |
|             Response.ContentType = "application/json";
 | |
|             Response.StatusCode = StatusCodes.Status403Forbidden;
 | |
|             await Response.WriteAsync(JsonConvert.SerializeObject(ResponseOutput.NotOk("您的权限不允许进行该操作",ApiResponseCodeEnum.HaveTokenNotAccess)));
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 |