在ASP.NET Core 2 Web Api中设置路由的最佳方法

时间:2017-10-04 23:44:05

标签: asp.net asp.net-web-api asp.net-core

我正在寻找在我的网络Api中进行路由的最佳方式。

目前我的路线是这样的:

[Route("api/branch/{branchId}/products")]
[Route("api/branch/{branchId}/clients")]

为了使用api,我需要发送一个带有授权头的令牌。令牌将用户branchId作为声明。

使用我当前的设置,我需要向用户提供branchId以便使用api,我不喜欢。

仅使用此路线使用令牌,实施解决方案的最佳方法是什么?

[Route("api/branch/products")]

我知道我可以使用UserManager在每个控制器中提取令牌值,但这将是很多重复的代码

你会建议什么?

由于 Alberto Lopez

1 个答案:

答案 0 :(得分:0)

编写中间件以从令牌中提取声明值并将其存储在当前的http上下文中。

HttpContext.Items["branchId"] = branchIdFromToken;

然后,您只需调用HttpContext.Items["branchId"]即可在请求上下文可用的任何地方使用它。

可以找到用于编写中间件和从令牌中提取声明(不同目的)的示例here