繁体   English   中英

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

[英]ASP.Net MVC 5 - Correct way to access HttpContext.Current.User outside of controller?

我有一个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...

}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM