| 123456789101112131415161718192021222324252627282930313233 |
- using Microsoft.AspNetCore.Authentication.JwtBearer;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.Filters;
- using Microsoft.Extensions.DependencyInjection;
- using System;
- using System.Collections.Generic;
- using System.Security.Claims;
- using System.Text;
- using System.Threading.Tasks;
- namespace Api.SignToken
- {
- public class PermissionFilter : Attribute, IAsyncAuthorizationFilter
- {
- public PermissionFilter(string name)
- {
- Name = name;
- }
- public string Name { get; set; }
- public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
- {
- var authorizationService = context.HttpContext.RequestServices.GetRequiredService<IAuthorizationService>();
- var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, null, new PermissionAuthorizationRequirement(Name));
- if (!authorizationResult.Succeeded)
- {
- context.Result = new ForbidResult();
- }
- }
- }
- }
|