【发布时间】:2019-04-21 11:15:39
【问题描述】:
给你一些背景:
我创建了一个多租户 Web 应用程序。
这里,对于任何请求,都在执行以下步骤
1. Fetch the user information such as ID from HttpContext object
2. Then getting the approprate db name from a common db.
3. Updating the dbContext with the db name
4. And all my repository classes are instantiated based on this updated dbContext
前两个步骤是在类库项目(服务层)中完成的,为了获取用户 ID,我必须访问 HttpContext 对象,手动引用 AspNetCore.Http.dll 的对象.(获取dll并复制到文件夹中并添加到项目中)
这样做的正确方法是什么?在类库项目中使用 NetCore 库是不是更好?
【问题讨论】:
-
我通常会将来自请求的任何信息(例如
UesrID)从我的控制器传递给服务层方法。 -
如果您需要与 UserID 一起传递其他数据怎么办?假设我需要从请求的标头中传递一些其他 ID。然后,我的所有服务方法都应该更新。
-
没关系。你所说的实际上是一种不好的做法。您实际上是在隐藏依赖项。您的班级需要一个用户 ID 和一些标题。而不是实际制作 API 的那一部分,您只是尝试传递一些对象,该类甚至不应该知道恰好包含这些信息(以及它不需要的许多其他东西) )。如果现在只是 id,但稍后您还需要一个标头,这实际上是对您的 API 的重大更改,应该这样处理。
标签: c# asp.net-core