我正在开发一个 Orhcard 模块,我需要获取当前用户的 ID。我已经尝试了所有我能在谷歌上找到的东西,但没有任何效果。 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 中获取用户名,但我需要 ID。用户已登录。我尝试了各种帐户和帐户类型。我可以看到与用户一起工作的其他部分正在工作,并且能够通过 WorkContext 显示用户名。
我错过了什么?
最佳答案
看起来您正在尝试从构造函数访问它。在使用它们之前,您需要真正正确地注入(inject)这些服务。所以……
private readonly IOrchardServices _orchardServices;
public MyWidgetDriver(IOrchardServices orchardServices) {
_orchardServices = orchardServices;
}
public DriverResult Display(...) {
var b = _orchardServices.WorkContext.CurrentUser;
var id = b.Id;
}
关于orchardcms - 为什么 WorkContext.CurrentUser 总是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584286/