使用ASP.Net Core API。常规应用程序有一个路由(api/(,管理api有另一个路由。有没有一种方法可以根据URL设置不同的全局策略?
这篇文章使用ASP.NET Core 3.x中的DefaultPolicy和FallbackPolicy设置全局授权策略,讨论了如何在应用程序的不同部分(MapRazorPages、MapHealthChecks等(上设置全局授权。
MapHealthChecks有一个用于要应用策略的路由的参数。MapControllers((不接受任何参数。有可能在控制器上做同样的事情吗?
可以为每个区域单独指定自定义策略:
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("ApiPolicy", policy =>
{
policy.RequireAuthenticatedUser();
policy.RequireClaim("scope", "api");
});
});
...
app.MapControllerRoute(
name: "Api",
pattern: "api/{controller=Home}/{action=Index}/{id?}")
.RequireAuthorization("ApiPolicy");