Rob*_*lls 3 c# asp.net asp.net-core
我试图基于此文章在.net core 2.1中运行基于策略的授权:https : //docs.microsoft.com/zh-cn/aspnet/core/security/authorization/policies?view= aspnetcore-2.1
但是,我似乎无法解决。
在下面的示例中,我注释掉了context.suceeed行,因此我以为对usercontroller的api调用将失败。
但是我的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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的经理
public class VerifyAuthCookieHandler : AuthorizationHandler<VerifyAuthCookieRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
VerifyAuthCookieRequirement requirement)
{
//context.Succeed(requirement);
return Task.CompletedTask;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的要求:
public class VerifyAuthCookieRequirement : IAuthorizationRequirement
{
public VerifyAuthCookieRequirement()
{
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我的控制器:
[Route("api/[controller]")]
[Authorize(Policy = "VerifyAuthCookie")]
public class UserController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
如果我在HandleRequirementAsync中添加代码并设置一个断点,那么在调试时它不会被击中,因此我的Handler似乎根本没有被调用。
| 归档时间: |
|
| 查看次数: |
2807 次 |
| 最近记录: |