using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc; public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationFilterContext context) { string? token = context.HttpContext.Request.Headers["token"].FirstOrDefault()?.Split(' ').Last(); if (string.IsNullOrEmpty(token)) token = ""; if (HasAllowAnonymous(context) == false && token.Length < 5) { context.Result = new JsonResult(new { msg = "你无权做这些", code = 401 }) { StatusCode = StatusCodes.Status401Unauthorized }; } } private static bool HasAllowAnonymous(AuthorizationFilterContext context) { var filters = context.Filters; if (filters.OfType().Any()) { return true; } var endpoint = context.HttpContext.GetEndpoint(); return endpoint?.Metadata?.GetMetadata() != null; } }