using Furion.Authorization; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using System.Threading.Tasks; using YD_Event.Application.Menu; using Furion; using Furion.DataEncryption; namespace YD_Event.Web.Core; public class JwtHandler : AppAuthorizeHandler { /// /// 这里写您的授权判断逻辑,授权通过返回 true,否则返回 false /// /// /// /// public override Task PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext) { string code = httpContext.Request.Path.Value!.Replace("/api/", "").Replace("/", ":"); var sysMenuService = App.GetService(httpContext.RequestServices); //判断访问权限 return sysMenuService.CheckPermission(code); } /// /// 自动刷新token /// /// /// /// public override async Task HandleAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext) { // 自动刷新 token if (JWTEncryption.AutoRefreshToken(context, context.GetCurrentHttpContext())) { await AuthorizeHandleAsync(context); } else { context.Fail(); // 授权失败 context.GetCurrentHttpContext()?.SignoutToSwagger(); } } }