using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Text; using System; using System.Threading.Tasks; using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.ExceptionHandling; using Volo.Abp.Authorization; using Volo.Abp.DependencyInjection; using Volo.Abp.ExceptionHandling; using Volo.Abp.Http; using Volo.Abp.Json; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization.Policy; using System.Reflection.Metadata; using Microsoft.AspNetCore.Authentication; using System.Linq; using Microsoft.AspNetCore.Mvc.Controllers; using System.Net; namespace Shentun.Peis { // public class AuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler, ITransientDependency public class AuthorizationMiddlewareResultHandler { //public async Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) //{ // var endPoint = context.GetEndpoint(); // var controllerActionDescriptor = (ControllerActionDescriptor)endPoint.Metadata // .ToList().FirstOrDefault(d => d is ControllerActionDescriptor); // var controllerName = controllerActionDescriptor.ControllerName; // var actionName = controllerActionDescriptor.ActionName; // if (!context.User.Identity.IsAuthenticated) // { // context.Response.StatusCode = (int)HttpStatusCode.OK; // // await context.Response.WriteAsync("{\"data\":{\"succeeded\":false,\"code\":401,\"message\":\"登录已过期,请重新登录\"}}"); // return; // } // //else if (!await HandleRequirementEvaluateAsync(context.User, controllerName, actionName)) // //{ // // context.Response.StatusCode = (int)HttpStatusCode.Forbidden; // // await context.Response.WriteAsync("{\"data\":{\"succeeded\":false,\"code\":403,\"message\":\"您暂⽆⾜够的权限执⾏该操作\"}}"); // // return; // //} // await next(context); //} //public Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) //{ // if (authorizeResult.Succeeded) // { // return next(context); // } // return Handle(); // async Task Handle() // { // if (authorizeResult.Challenged) // { // if (policy.AuthenticationSchemes.Count > 0) // { // foreach (var scheme in policy.AuthenticationSchemes) // { // await context.ChallengeAsync(scheme); // } // } // else // { // await context.ChallengeAsync(); // } // } // else if (authorizeResult.Forbidden) // { // if (policy.AuthenticationSchemes.Count > 0) // { // foreach (var scheme in policy.AuthenticationSchemes) // { // await context.ForbidAsync(scheme); // } // } // else // { // await context.ForbidAsync(); // } // } // } //} } }