【发布时间】:2018-10-30 16:10:33
【问题描述】:
我正在尝试从一个类中获取当前登录的 ApplicationUser 的信息。
我能够在这样的控制器中实现这一点:
private readonly UserManager<ApplicationUser> _userManager;
public AccountController(UserManager<ApplicationUser> _userManager)
{
_userManager = userManager;
}
private Task<ApplicationUser> GetCurrentUserAsync() => _userManager.GetUserAsync(HttpContext.User);
但是,当我在课堂上尝试此操作时,_usermanager 和 HttpContext 均出现错误,提示需要对象引用。
我试过了,但是,我似乎无法使用这种方法访问用户的信息。任何帮助将不胜感激。
var contextAccessor = services.GetRequiredService<IHttpContextAccessor>();
var user = contextAccessor.HttpContext.User;
【问题讨论】:
-
在服务类中这样做是否一定合适?理论上,该服务可以在不同用户帐户下的不同机器上执行。您不应该在控制器中获取用户 ID 并将其传递给服务吗?
-
@jmcilhinney 抱歉,这不是服务类。我对 ASP.NET 很陌生,术语有误。
-
我有一个带有 GetCart 方法的 ShoppingCart 类,我试图在 Startup.cs 中将其配置为服务,所以我认为在我的情况下使用控制器不会起作用
标签: c# asp.net asp.net-mvc authentication asp.net-core