我正在尝试使用Windows身份验证执行ASP.NET Core 2 api。我需要一些不寻常的授权要求,所以我决定创建自己的策略要求。
public void ConfigureServices(IServiceCollection services)
{
(...)
services.AddAuthorization(options =>
{
options.AddPolicy("MyPolicy", policy => policy.AddRequirements(new MyRequirement())
);
});
}
我的要求:
public class MyRequirement: IAuthorizationRequirement
{
(...)
}
处理程序:
public class MyHandler: AuthorizationHandler<MyRequirement>
{
public IService userService;
public MyHandler(IService service)
{
this.service = service;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MyRequirement requirement)
{
(...)
return Task.CompletedTask;
}
}
显然,我的方法的授权属性:
[Authorize(Policy = "MyPolicy")]
public IEnumerable<string> GetAll()
{
(...)
}
但是当我尝试访问这样的方法时,我得到了:
InvalidOperationException:未指定authenticationScheme,并且 找不到DefaultForbidScheme。
我浪费了很多时间来修复它。为什么会这样?我怎样才能让它发挥作用?
在IISExpress上,一切都在本地发生。