我有一个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...
}
答案 0 :(得分:0)
首先,为什么您的业务层应该完全了解HttpContext
。如果根本不需要,则不应该将数据存储到变量中,然后将其传递给您正在调用的方法。当前您正在采用的方法。
可能您可以尝试访问System.Threading.Thread.CurrentPrincipal
以获得身份验证上下文