颐和api

PermissionFilter.cs 1.1KB

123456789101112131415161718192021222324252627282930313233
  1. using Microsoft.AspNetCore.Authentication.JwtBearer;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.Filters;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Security.Claims;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Api.SignToken
  12. {
  13. public class PermissionFilter : Attribute, IAsyncAuthorizationFilter
  14. {
  15. public PermissionFilter(string name)
  16. {
  17. Name = name;
  18. }
  19. public string Name { get; set; }
  20. public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
  21. {
  22. var authorizationService = context.HttpContext.RequestServices.GetRequiredService<IAuthorizationService>();
  23. var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, null, new PermissionAuthorizationRequirement(Name));
  24. if (!authorizationResult.Succeeded)
  25. {
  26. context.Result = new ForbidResult();
  27. }
  28. }
  29. }
  30. }