Почему WorkContext.CurrentUser всегда равен нулю?
Я работаю над модулем Orhcard, и мне нужно получить идентификатор текущего пользователя. Я перепробовал все, что мог найти в Google, но ничего не помогло. CurrentUser просто всегда равен нулю. Вот последние вещи, которые я пробовал
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 все равны нулю. Я могу получить имя пользователя из HttpContext.User, но мне нужен идентификатор. пользователь вошел в систему. Я пробовал различные учетные записи и типы учетных записей. Я вижу, что другие части, которые работают с пользователем, работают и способны показывать имя пользователя через WorkContext.
Что мне не хватает?
1 ответ
Решение
Похоже, вы пытаетесь получить к нему доступ из конструктора. Вы должны на самом деле правильно внедрить эти услуги перед их использованием. Так...
private readonly IOrchardServices _orchardServices;
public MyWidgetDriver(IOrchardServices orchardServices) {
_orchardServices = orchardServices;
}
public DriverResult Display(...) {
var b = _orchardServices.WorkContext.CurrentUser;
var id = b.Id;
}