在.Net Core 2.0 WebAPI控制器中获取当前的http上下文用户

时间:2019-01-03 09:30:38

标签: c# .net-core asp.net-core-webapi httpcontext

我有一个.Net Core 2 WebAPI控制器,需要在其构造函数或路由之一中检索当前用户ID。

[Route("api/[controller]")]
public class ConfigController : Controller
{
    private readonly IConfiguration _configuration;

    public ConfigController(IConfiguration iConfig)
    {
        _configuration = iConfig;
    }

    [HttpGet("[action]")]
    public AppSettings GetAppSettings()
    {
        var appSettings = new AppSettings
        {
            //Other settings
            CurrentUser = WindowsIdentity.GetCurrent().Name
        };
        return appSettings;
    }
}

以上WindowsIdentity.GetCurrent().Name不会给我我需要的东西。我认为我需要一个等效的.Net框架的System.Web.HttpContext.Current.User.Identity.Name

有什么主意吗? 请注意,这是一个.Net Core 2.0 WebAPI,请不要为常规.net控制器建议解决方案。

1 个答案:

答案 0 :(得分:2)

ControllerBase.User将保留请求当前经过身份验证的用户的原则,并且仅在执行操作的范围内可用,而在构造函数中不可用。

[HttpGet("[action]")]
public AppSettings GetAppSettings() {
    var user = this.User;
    var appSettings = new AppSettings {
        //Other settings
        CurrentUser = user.Identity.Name
    };
    return appSettings;
}