我正在寻找在我的网络Api中进行路由的最佳方式。
目前我的路线是这样的:
[Route("api/branch/{branchId}/products")]
[Route("api/branch/{branchId}/clients")]
为了使用api,我需要发送一个带有授权头的令牌。令牌将用户branchId作为声明。
使用我当前的设置,我需要向用户提供branchId以便使用api,我不喜欢。
仅使用此路线使用令牌,实施解决方案的最佳方法是什么?
[Route("api/branch/products")]
我知道我可以使用UserManager在每个控制器中提取令牌值,但这将是很多重复的代码
你会建议什么?
由于 Alberto Lopez
答案 0 :(得分:0)
编写中间件以从令牌中提取声明值并将其存储在当前的http上下文中。
HttpContext.Items["branchId"] = branchIdFromToken;
然后,您只需调用HttpContext.Items["branchId"]
即可在请求上下文可用的任何地方使用它。
可以找到用于编写中间件和从令牌中提取声明(不同目的)的示例here。