2

我有一个 MVC 4 应用程序,它使用不同类库中的服务层。

对该服务层的一些调用需要知道哪些用途正在请求数据。

数据记录因用户角色而异。

对于防止耦合问题,我应该在请求中传递用户名 (HttpContext.User.Identity.Name) 还是应该使用相同的 HttpContext.User.Identity.Name 在服务层直接访问它。

我不确定是否应该从服务层隐藏 HttpContext。

4

2 回答 2

5

只需将当前经过身份验证的用户作为参数传递给您的服务层。永远不要HttpContext.User.Identity.Name在你的服务层中使用。

例如:

[Authorize]
public ActionResult SomeAction()
{
    string user = User.Identity.Name;
    this.someService.SomeOperation(user);
    ...
}

您的服务层永远不应绑定到HttpContext.

于 2013-02-04T08:29:18.710 回答
1

将 HttpContext 传递给服务层可能看起来很诱人,但这是一个糟糕的选择。它会在 ASP.net 运行时服务和业务逻辑之间建立一个硬链接(这正是您要避免的,我假设)。最好的办法是创建类来表示登录用户,您可以将其填充到基本控制器中并将其传递给服务层。

这样,您可以两全其美

于 2013-02-04T08:34:00.323 回答