为什么WorkContext.CurrentUser总是为空?

时间:2014-12-20 20:59:33

标签: orchardcms orchardcms-1.8

我正在开发Orhcard模块,我需要获取当前用户的ID。我尝试过在谷歌上找到的所有东西,但没有任何效果。 CurrentUser总是为null。以下是我尝试过的最新内容

public MyWidgetDriver(IWidgetService widgetService, 
            IAuthenticationService authenticationService,RequestContext requestContext,
            IWorkContextAccessor workContextAccessor, IOrchardServices orchSvc)
        {

            var a = authenticationService.GetAuthenticatedUser();
            var b = orchSvc.WorkContext.CurrentUser;
            var c = workContextAccessor.GetContext().CurrentUser;

        }

a,b& c都是null。我可以从HttpContext.User获取用户名,但我需要ID。用户已登录。我尝试过各种帐户和帐户类型。我可以看到与用户一起工作的其他部分正在工作,并且能够通过WorkContext显示用户的名字。

我错过了什么?

1 个答案:

答案 0 :(得分:4)

看起来你正试图从构造函数中访问它。在使用它们之前,您需要实际正确地注入这些服务。所以......

private readonly IOrchardServices _orchardServices;

public MyWidgetDriver(IOrchardServices orchardServices) {
 _orchardServices = orchardServices;
}

public DriverResult Display(...) {
 var b = _orchardServices.WorkContext.CurrentUser;
 var id = b.Id;
}