我正在开发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显示用户的名字。
我错过了什么?
答案 0 :(得分:4)
看起来你正试图从构造函数中访问它。在使用它们之前,您需要实际正确地注入这些服务。所以......
private readonly IOrchardServices _orchardServices;
public MyWidgetDriver(IOrchardServices orchardServices) {
_orchardServices = orchardServices;
}
public DriverResult Display(...) {
var b = _orchardServices.WorkContext.CurrentUser;
var id = b.Id;
}