public class UserNamesHandler : AuthorizationHandler<UserNamesRequirement> { protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, UserNamesRequirement requirement) { var userName = context.User.Identity.Name; if(requirement.UserNames.ToList().Contains(userName)) context.Succeed(requirement); return Task.CompletedTask; // if it does not compile use Task.FromResult(0) } } public class UserNamesRequirement : IAuthorizationRequirement { public UserNamesRequirement(params string[] UserNames) { UserNames = UserNames; } public string[] UserNames { get; set; } }
在startup.cs中添加
public void ConfigureServices(IServiceCollection services) { services.AddAuthorization(options => { options.AddPolicy("UserNamesPolicy", policy => policy.Requirements.Add(new UserNamesRequirement("ggg","dsds"))); }); services.AddSingleton<IAuthorizationHandler, UserNamesHandler>() }