【发布时间】:2018-08-10 14:04:19
【问题描述】:
我正在构建一个新的基于 Web API 2 的 RESTful API。 (由于解决方案中的一些依赖性,我必须针对完整的框架)。
我过去曾使用 System.Security.Claims.ClaimAuthorizationManager 来构建自定义用户安全检查。然而,此解决方案不是非常适合测试 (DI) 或启用异步。
我想使用 aspnet 核心 (https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies) 中提供的基于策略的授权,因为这似乎是一个非常适合我的需求的好模型。
然而,我不知道这是否真的可行。看来真正的技术难点可能是策略需求通过在服务集合中注册处理程序来找到需求处理程序,例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthorization(options =>
{
options.AddPolicy("AtLeast21", policy =>
policy.Requirements.Add(new MinimumAgeRequirement(21)));
});
services.AddSingleton<IAuthorizationHandler, MinimumAgeHandler>();
}
有没有办法让授权服务在 Web API 2 服务中获取需求处理程序?
【问题讨论】:
-
两者都使用 ASP.NET 标识。你为什么不使用 ASP.NET Core 呢?您可以使用 ASP.NET Core 定位完整框架,它不依赖于 .NET Core 运行时
-
我想我只是对如何(或应该)混合和匹配 asp.net core 和 web api 2 (System.Web.Http) 感到有点困惑。您是否建议用 asp.net 核心替换 web api 2,但目标是完整的框架?
-
是的,ASP.NET Core 是 ASP.NET MVC 6 的新名称。它不绑定到 .NET Core 运行时。在项目创建对话框中,从运行时列表中选择完整的运行时
-
好的,谢谢@PanagiotisKanavos,我会试一试的。
标签: asp.net asp.net-core asp.net-web-api2