asp.net 核心中 GetUserManager 的替代
Alternate of GetUserManager in asp.net core
我正在将现有的 Asp.net Mvc 项目转换为 .Net Core 现在问题是这个 get 方法
public ApplicationUserManager UserManager
{
get
{
return _userManager ??
HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
在 Mvc 中,我们可以使用
获取 OwinContext
HttpContext.GetOwinContext().GetUserManager()
但在 .Net Core GetOwinContext 不存在的情况下,当我比较两者的 HttpContext 定义时 类
在 Mvc 的情况下,HttpContextBase 是类型,但在 Core 的情况下,HttpContext 在与 HttpContextBase 相同的命名空间中没有扩展方法,这就是找不到此扩展方法的原因,请告诉我如何在 Core 中执行此操作?
没有替代品。 ASP.NET Core 对几乎所有内容都使用依赖注入。如果你需要 UserManager<TUser>
,你可以注入你正在使用的任何 class 的构造函数(控制器等):
public class MyController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
public MyController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
...
}
要从 HttpContext
访问 UserManager
,您可以尝试实现如下扩展:
public static class HttpContextExtension
{
public static UserManager<TUser> GetUserManager<TUser>(this HttpContext context) where TUser: class
{
return context.RequestServices.GetRequiredService<UserManager<TUser>>();
}
}
然后像
一样使用它
public class HomeController : Controller
{
public IActionResult Index()
{
var userManager = HttpContext.GetUserManager<IdentityUser>();
return View();
}
}
我正在将现有的 Asp.net Mvc 项目转换为 .Net Core 现在问题是这个 get 方法
public ApplicationUserManager UserManager
{
get
{
return _userManager ??
HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
在 Mvc 中,我们可以使用
获取 OwinContextHttpContext.GetOwinContext().GetUserManager()
但在 .Net Core GetOwinContext 不存在的情况下,当我比较两者的 HttpContext 定义时 类
在 Mvc 的情况下,HttpContextBase 是类型,但在 Core 的情况下,HttpContext 在与 HttpContextBase 相同的命名空间中没有扩展方法,这就是找不到此扩展方法的原因,请告诉我如何在 Core 中执行此操作?
没有替代品。 ASP.NET Core 对几乎所有内容都使用依赖注入。如果你需要 UserManager<TUser>
,你可以注入你正在使用的任何 class 的构造函数(控制器等):
public class MyController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
public MyController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
...
}
要从 HttpContext
访问 UserManager
,您可以尝试实现如下扩展:
public static class HttpContextExtension
{
public static UserManager<TUser> GetUserManager<TUser>(this HttpContext context) where TUser: class
{
return context.RequestServices.GetRequiredService<UserManager<TUser>>();
}
}
然后像
一样使用它public class HomeController : Controller
{
public IActionResult Index()
{
var userManager = HttpContext.GetUserManager<IdentityUser>();
return View();
}
}