ASP.Net MVC 5-在控制器外部访问HttpContext.Current.User的正确方法?

时间:2018-09-19 13:15:16

标签: c# oop constructor asp.net-mvc-5

我有一个ASP.NEt MVC 5应用程序,该应用程序使用服务来访问有关用户的信息。

当前,我将其作为参数传递给服务类中的方法,或者在需要的每种方法中执行以下操作:

if (HttpContext.Current.User.Identity.IsAuthenticated)
{
        var user = HttpContext.Current.User;

        // do some stuff
}

我该如何重构代码,比如说将其注入到类的构造函数中,以便它可用于该类中的任何方法,或者它是否正确纠正了我目前的操作方式,例如将其作为参数传递?

public class ViewModelBuilderService : IViewModelBuilderService
{
    private readonly IUnitOfWork _unitOfWork;


    public ViewModelBuilderService(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork; 

    }

    // Other methods...

}

1 个答案:

答案 0 :(得分:0)

首先,为什么您的业务层应该完全了解HttpContext。如果根本不需要,则不应该将数据存储到变量中,然后将其传递给您正在调用的方法。当前您正在采用的方法。

可能您可以尝试访问System.Threading.Thread.CurrentPrincipal以获得身份验证上下文