条件属性路由

时间:2016-07-05 17:21:50

标签: asp.net-web-api2 asp.net-web-api-routing

使用属性路由时,是否可以根据某些运行时条件删除路由 - 例如许可?

这样的事情:

[LicensedRoute("/api/whatever")]

其中' / api /其他'如果应用程序已获得许可,则仅添加到路由表中。

显然,我可以明确地执行操作方法中的检查或使用操作过滤器来验证请求,但最终我更倾向于在软件未获得许可的情况下无法使用该路由。

1 个答案:

答案 0 :(得分:1)

似乎您需要属性路由:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

它是RESTful吗?如何存储许可信息:是用户登录吗?令牌?键?

你可以做RESTful并强制客户端每次通过基于令牌的身份验证传递令牌,例如:定义几个“许可证”级别/类型(例如,免费/试用/基本/专业版),然后在持久存储(表)将令牌(guids)映射到许可证类型。

然后使用自定义属性,将每个端点/控制器/操作标记为可访问的最小所需许可证类型(例如[MinimumLicence("Basic")])。然后根据所需的许可证创建“路由表”。

在这种情况下,您将拒绝访问路径,而不是“删除”它们。