Я пытаюсь получить авторизацию на основе политик, работающую в ядре .net 2.1 на основе этой статьи: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1
Однако я не могу заставить ее работать.
ВВ приведенном ниже примере я закомментировал строку context.suceeed, поэтому мог бы подумать, что мой вызов API для моего usercontroller завершится неудачей.
Однако мой вызов API принимается.
Что такоеЯ что-то не так делаю?
Это мой startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IAuthorizationHandler, VerifyAuthCookieHandler>();
services.AddAuthorization(options =>
{
options.AddPolicy("VerifyAuthCookie", policy =>
policy.Requirements.Add(new VerifyAuthCookieRequirement()));
});
services.AddMvcCore().AddJsonFormatters();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
}
}
Вот мой обработчик
public class VerifyAuthCookieHandler : AuthorizationHandler<VerifyAuthCookieRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
VerifyAuthCookieRequirement requirement)
{
//context.Succeed(requirement);
return Task.CompletedTask;
}
}
А вот мое требование:
public class VerifyAuthCookieRequirement : IAuthorizationRequirement
{
public VerifyAuthCookieRequirement()
{
}
}
И, наконец, мой контроллер:
[Route("api/[controller]")]
[Authorize(Policy = "VerifyAuthCookie")]
public class UserController : Controller
{
}
Если я добавлю код в HandleRequirementAsync и установлю точку останова, тогда он не будет срабатывать при отладке, поэтому мой обработчик вообще не будет вызываться.