簡體   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